怎樣確定K-means算法中的k值
1. K-means算法
k-means算法是機器學習中常用的聚類算法,原理簡單實現容易,內存占用量也比較小。但使用這個方法時,需要事先指定將要聚合成的簇數。
在先驗知識缺乏的情況下,想要確定是非常困難的。
目前常用的用來確定的方法主要有兩種:肘部法、輪廓系數法。
2. 初始k值的選擇
1) 肘部法
肘部法所使用的聚類評價指標為:數據集中所有樣本點到其簇中心的距離之和的平方。但是肘部法選擇的并不是誤差平方和最小的,而是誤差平方和突然變小時對應的
值。
2) 輪廓系數法
輪廓系數是一種非常常用的聚類效果評價指標。該指標結合了內聚度和分離度兩個因素。其具體計算過程如下:
假設已經通過聚類算法將待分類的數據進行了聚類,并最終得到了個簇。
對于每個簇中的每個樣本點,分別計算其輪廓系數。
具體地,需要對每個樣本點計算以下兩個指標:
:樣本點
到與其屬于同一個簇的其他樣本點的距離的平均值。
越小,說明該樣本
屬于該類的可能性越大。
:樣本點
到其他簇
中的所有樣本的平均距離
的最小值 ,
則樣本點的輪廓系數為:
而所有樣本點的輪廓系數的平均值,即為該聚類結果總的輪廓系數
。
,
越接近與1,聚類效果越好。
3) 具體案例
先利用sklearn.datasets中的方法生成自己的聚類數據集。
具體如下:
對數據x進行歸一化(因為KMeans算法中涉及到距離的計算),具體如下:
使用肘部法確定值,其代碼如下:
使用輪廓系數確定值,其代碼如下:
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解Selenium+PhantomJS+python簡單實現爬蟲的功能
這篇文章主要介紹了詳解Selenium+PhantomJS+python簡單實現爬蟲的功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07