這系列結束後,我將繼續挑戰IT鐵人30日:
佛心分享 : it 考照之路
主題:從摸索7個月到下定決心訂下3週後考試:自學取得PMP 3AT 執照
今天我們要學習的是:
分群演算法原理
分群演算法步驟
分群演算法程式碼
分群演算法原理:
原理很直覺,就是抽象的說就是「相似」,在科學上所說的兩個物件相似,指得就是「距離」,物件兩兩相距最近的距離,尺度為毆式距離,在day12有談過。
從樣本點隨機挑選k個質心做為初始集群中心。
將每個樣本分配到離它最近的質心。
再把質心移到「被分給它的樣本點」的中心。
重複以上2個步驟,直到集群分配不再變更。
所謂的「質心」就是隨機從樣本點挑出來要當成「集群中心」的點。
「集群分配不再變更」可以說是「質心」不再移動,或是樣本點全部分配完畢。
from
km = KMeans(n_cluster=3,
init='random',
n_init=10,
max_iter=300,
random_state=0)
n_cluser = 3,表示分三群
n_init = 10,init = 'random',初始隨機選取10個質心
計算所有樣本的距離矩陣
將每個數據點作為一個單一集群
兩兩合併兩個距離最近的集群對
更新距離矩陣
重複以上兩個步驟,直到合併成一個單一集群
距離矩陣:這裡的距離矩陣,是我們之前所說過的歐式距離,計算每一樣本,點對點的距離矩陣。
from scipy.cluster.hierarchy import linkage
linkage(X_train, method='ward',metric='euclidean')
method = 'ward',方法使用ward分群法。
metric = 'euclidean',度量選擇歐式距離。
首先介紹三個名詞:
核心點core point:在指定圓心半徑 r內的中心點。
邊界點border point : 在指定圓心半徑 r內,位於小於或等於半徑r距離的點。
局外點noise point:在指定圓心半徑r之外的點。
1.決定半徑 r與最少點數k(門檻值)
2.任意選取一個樣本當作中心點,以步驟1設定好的半徑畫圓
若圓內樣本數大於k,則此一樣本為核心點
若圓內樣本數小於k,但此點在半徑內稱邊界點
若圓內樣本數小於k,但此點在半徑外稱局外點
3.對每一樣本重複2步驟,直到所有樣本都當過核心點為止
4.分群:將所有核心點劃分一群,並納入邊界點,其它局外點為另一群。
from sklearn.cluster import DBSCAN
DBSCAN(eps=0.5, min_samples = 5, metric = 'euclidean'
eps = 0.5 ,半徑0.5
min_samples = 5 ,門檻值k
堅持學習了20日,有沒有想要躍躍欲試想挑戰ML,到目前為止我們所談的code都是最基礎的,明天我們將會談ML競賽kaggle,帶您學習幾個有名的datasets,讓您實際深入體驗真正的機器學習實戰。敬請期待。