最好免費觀看高清播放seo發(fā)帖網(wǎng)站
前文為JoyT的科研之旅第一周——科研工具學(xué)習(xí)及論文閱讀收獲-CSDN博客
DBSCAN 介紹
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一種基于密度的聚類算法,它能夠識別出任意形狀的簇,并有效地處理噪聲點。DBSCAN 不需要事先指定聚類的數(shù)量,這是其與許多其他聚類算法(如 K-means)的一個主要區(qū)別。?
DBSCAN 基本原理
-
核心點:如果一個點的 ? 鄰域內(nèi)至少有
min_samples
個點(包括點本身),則此點被認(rèn)為是一個核心點。 -
邊界點和噪聲點:距離核心點不遠(yuǎn)(在 ? 范圍內(nèi)),但自身不滿足核心點條件的點被視為邊界點。不屬于核心點或邊界點的點被視為噪聲點。
-
聚類形成:通過連接在 ? 范圍內(nèi)互相可達(dá)的核心點,形成聚類。邊界點會被歸入其所連接的核心點所在的聚類,而噪聲點不被歸入任何聚類。
代碼分析
取前文代碼的DBSCAN部分進(jìn)行介紹:
# DBSCAN去噪
epsilon = 0.3 # DBSCAN的半徑參數(shù)
min_samples = 3 # DBSCAN的最小樣本數(shù)參數(shù)(MinPts)
dbscan = DBSCAN(eps=epsilon, min_samples=min_samples)
clusters = dbscan.fit_predict(np.column_stack((filtered_longitudes, filtered_latitudes)))# 去除噪聲點
denoised_longitudes = filtered_longitudes[clusters != -1]
denoised_latitudes = filtered_latitudes[clusters != -1]
denoised_timestamps = filtered_timestamps[clusters != -1]
代碼中的 DBSCAN 工作流程
-
參數(shù)設(shè)置(與前文呼應(yīng),加入KDC能夠使得參數(shù)個數(shù)為1):
epsilon
(eps
): 定義了鄰域的半徑大小。在這個范圍內(nèi)的點被認(rèn)為是鄰近的。min_samples
: 定義了一個點成為核心點所需的最小鄰居數(shù)目。
-
DBSCAN 實例化和擬合:
- 創(chuàng)建 DBSCAN 對象,使用上述參數(shù)。
- 該對象調(diào)用?
fit_predict
方法對數(shù)據(jù)進(jìn)行聚類,數(shù)據(jù)由經(jīng)緯度構(gòu)成(filtered_longitudes
,filtered_latitudes
)。
-
噪聲點的處理:
fit_predict
方法返回的clusters
數(shù)組為每個點指定了一個聚類標(biāo)簽。噪聲點被標(biāo)記為-1
。- 通過檢查
clusters != -1
來篩選出非噪聲點,即那些屬于某個聚類的點。
-
結(jié)果可視化:
- 在散點圖中繪制去噪后的數(shù)據(jù)。這些點是 DBSCAN 確定為屬于某個聚類的點。
結(jié)論
在代碼中,DBSCAN 被用來識別和移除噪聲點,只保留那些被歸為某個聚類的點。這種方法特別適合于處理包含噪聲和具有不規(guī)則形狀簇的數(shù)據(jù),是一種強大且靈活的聚類工具。