DBSCAN聚類演算法

2021-10-03 17:48:54 字數 2269 閱讀 8511

(1)聚類速度快且能夠有效處理雜訊點和發現任意形狀的空間聚類;

(2)與 k-means 比較起來,不需要輸入要劃分的聚類個數;

(3)聚類簇的形狀沒有偏倚;

(4)可以在需要時輸入過濾雜訊的引數。

(1)當資料量增大時,要求較大的記憶體支援i/o消耗也很大;

(2)當空間聚類的密度不均勻、聚類間距差相差很大時,聚類質量較差,因為這種情況下引數min

ptsminpts

minpts

和e ps

epsep

s選取困難。

(3)演算法聚類效果依賴與距離公式選取,實際應用中常用歐式距離,對於高維資料,存在「維數災難」。

e ps

epsep

s——距離閾值,該聚類演算法中把距離當做密度表達,距離如何計算也很重要。

m in

ptsminpts

minpts

——形成乙個核心點所需要最小的直接可達點數,例如改引數設定為5,eps

epsep

s設定為2,那麼乙個核心點(包含自己)形成的條件是該核心店距離閾值2以內至少有5個點。

待聚類點分為三類:

直接可達點核心點距離閾值內的點成為直接可達點

可達點屬於不同核心點的直接的可達點通過核心點組成的路徑(相鄰核心點之間在各自距離閾值內)相連,那麼這些直接可達點被稱為可達點

局外點既不是核心點也不是直接可達點也不是可達點被稱為局外點,也可叫做雜訊點

# 建立figure

fig = plt.figure()

# 用來正常顯示中文標籤

matplotlib.rcparams['font.sans-serif'] = [u'simhei']

# 用來正常顯示負號

matplotlib.rcparams['axes.unicode_minus'] = false

x1, y1 = datasets.make_circles(n_samples=5000, factor=.6,

noise=.05)

x2, y2 = datasets.make_blobs(n_samples=1000, n_features=2,

centers=[[1.2,1.2]], cluster_std=[[.1]],random_state=9)

# 原始點的分布

ax1 = fig.add_subplot(311)

x = np.concatenate((x1, x2))

plt.scatter(x[:, 0], x[:, 1], marker='o')

plt.title(u'原始資料分布')

plt.sca(ax1)

"""# k-means聚類

from sklearn.cluster import kmeans

ax2 = fig.add_subplot(312)

y_pred = kmeans(n_clusters=3, random_state=9).fit_predict(x)

plt.scatter(x[:, 0], x[:, 1], c=y_pred)

plt.title(u'k-means聚類')

plt.sca(ax2)

"""# dbscan聚類

from sklearn.cluster import dbscan

ax3 = fig.add_subplot(313)

y_pred = dbscan(eps = 0.1, min_samples = 10).fit_predict(x)

plt.scatter(x[:, 0], x[:, 1], c=y_pred)

plt.title(u'dbscan聚類')

聚類演算法 DBSCAN

dbscan 是一種簡單的,基於密度的聚類演算法。本次實現中,dbscan 使用了基於中心的方法。在基於中心的方法中,每個資料點的密度通過對以該點為中心以邊長為 2 eps 的網格 鄰域 內的其他資料點的個數來度量。根據資料點的密度分為三類點 1 核心點 該點在鄰域內的密度超過給定的閥值 minps...

DBSCAN聚類演算法

基於密度定義,我們將點分為 dbscan演算法的本質就是隨大流,邊界點緊緊圍繞著核心點,他們抱團,不帶噪點玩兒 小團體多了,聯絡比較密切的小團體之間聚成了同個類 比較偏遠的小團體想要加入這個圈子,進不去,就單幹,我們自己玩自己的,聚成了另外的乙個類 一開始就被孤立的噪點吧,自然有自己的傲骨,接著孤芳...

DBSCAN 聚類演算法

dbscan演算法是一種基於密度聚類的演算法。核心概念 核心點 若某個點的密度達到演算法設定的閾值 即 r 鄰域內點的數量不小於 minpts 則其為核心點。直接密度可達 若某點p在點q的 r 鄰域內,且q是核心點,則稱p從q出發直接密度可達。密度可達 若有乙個點的序列q0 q1 qk,對任意qi從...