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