1、DBSCAN概念
基於密度的帶噪聲的空間聚類應用算法,它是將簇定義爲密度相連的點的大集合,能夠把足夠高密度的區域劃分爲簇,並且可在噪聲的空間數據集中發現任意形狀的聚類。
2、密度聚類和距離聚類
密度聚類:只要臨近區域的密度、對象、或者數據點的數目超過耨個閾值,就繼續聚類,可以根據與周偉特點進行聚類
kmeans和分層聚類都是基於距離進行聚類,只能發現球狀的簇,五發現其他形式的簇
3、其他概念
01密度:空間中任意一點的密度是以該點爲圓形,以Eps爲半徑的圓區域內包含的點數目。
02 領域: 空間中任意一點的領域是以該點爲圓心、以Eps爲半徑的圓區域內包含的點數目。
03 核心點:空間某一點的密度,如果大於某一給定閾值MInPts,則稱爲邊界點。
04 噪聲點:數據集中不屬於核心點,也不屬於邊界點的點,也就是密度值爲1的點
4、聚類方法
model=sklearn.cluster.DBSCAN(eps,min_samples)
eps 領域的大小,使用圓的半徑表示
min_samples 點的個數的閾值
model.fit_predict(data)
data 數據
訓練模型並且進行預測的方法
5、案例
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('D:\\DATA\\pycase\\number2\\7.2\\data.csv')
plt.plot(
data['x'],
data['y'],
'.',
color='r'
)
# 只能畫出一種顏色,scatter可以根據標籤類型區分繪畫分類
# 導入DBSCN訓練算法
from sklearn.cluster import DBSCAN
eps=0.2 # 領域的大小,使用圓的半徑表示
MinPts=5 # 領域內,點個數的閾值
model=DBSCAN(eps,MinPts)
# 數據匹配
data['type']=model.fit_predict(data)
# 繪圖
plt.scatter(
data['x'],
data['y'],
c=data['type'] # 表示顏色
)