[Python實作] 密度聚類 DBSCAN

本單元以鳶尾花資料集演示如何在Python裡實作基於密度的分群方式DBSCAN。文末提供程式檔案,歡迎有興趣的朋友下載練習。

(一) 引入模組及準備資料

要做DBSCAN,我們可以採用Scikit Learn裡面已經完成好的模組,在sklearn.cluster底下的DBSCAN。另外,為了視覺化我們會引入matplotlib裡面的pyplot 。今天我們會採用Scikit Learn資料集裡面所提供的的鳶尾花資料集。

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.cluster import DBSCAN

為了視覺化,今天我們僅採用花瓣的長度及寬度當作我們的特徵資料。非常鼓勵大家採用自己的資料練習看看唷!

iris=datasets.load_iris()
X=iris.data
X=X[:,2:4]

(二)建模及分類結果

在DBSCAN的實作中,有兩個主要的參數,分別為eps與min_sample。eps代表著圓的半徑,min_samples代表著以核心點為圓心的圓裡面所需包含的最小樣本數。若eps愈小,min_sample愈大,則代表著我們對樣本密度的要求較高。反之,若取eps大,min_sample卻很小,代表著我們對樣本密度的要求較低。而這些參數的大小,應綜合考量樣本本身以及我們自身的需求而給定。

建模:
clustering=DBSCAN(eps=0.3,min_samples=10).fit(X)

分群結果:
clustering.labels_

因為已經把特徵調整成2維,我們可以用散佈圖簡單看一下最終分群的結果。

plt.scatter(X[:,0],X[:,1],c=clustering.labels_)

總括來說,有了前人寫好的模組,讓DBSCAN在Python中的實作變得非常容易,準備好資料後,兩個步驟即可輕易完成!拿起您手邊的資料,一起玩玩看吧!

程式檔案,歡迎於此下載

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *