怎樣確定K-means算法中的k值
1. K-means算法
k-means算法是機器學(xué)習(xí)中常用的聚類算法,原理簡單實現(xiàn)容易,內(nèi)存占用量也比較小。但使用這個方法時,需要事先指定將要聚合成的簇數(shù)
。
在先驗知識缺乏的情況下,想要確定
是非常困難的。
目前常用的用來確定
的方法主要有兩種:肘部法、輪廓系數(shù)法。
2. 初始k值的選擇
1) 肘部法
肘部法所使用的聚類評價指標(biāo)為:數(shù)據(jù)集中所有樣本點到其簇中心的距離之和的平方。但是肘部法選擇的并不是誤差平方和最小的
,而是誤差平方和突然變小時對應(yīng)的
值。
2) 輪廓系數(shù)法
輪廓系數(shù)是一種非常常用的聚類效果評價指標(biāo)。該指標(biāo)結(jié)合了內(nèi)聚度和分離度兩個因素。其具體計算過程如下:
假設(shè)已經(jīng)通過聚類算法將待分類的數(shù)據(jù)進行了聚類,并最終得到了
個簇。
對于每個簇中的每個樣本點
,分別計算其輪廓系數(shù)。
具體地,需要對每個樣本點
計算以下兩個指標(biāo):
:樣本點
到與其屬于同一個簇的其他樣本點的距離的平均值。
越小,說明該樣本
屬于該類的可能性越大。
:樣本點
到其他簇
中的所有樣本的平均距離
的最小值 ,
則樣本點
的輪廓系數(shù)為:

而所有樣本點
的輪廓系數(shù)的平均值,即為該聚類結(jié)果總的輪廓系數(shù)
。
,
越接近與1,聚類效果越好。
3) 具體案例
先利用sklearn.datasets中的方法生成自己的聚類數(shù)據(jù)集。
具體如下:

對數(shù)據(jù)x進行歸一化(因為KMeans算法中涉及到距離的計算),具體如下:

使用肘部法確定
值,其代碼如下:

使用輪廓系數(shù)確定
值,其代碼如下:

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python更新數(shù)據(jù)庫中某個字段的數(shù)據(jù)(方法詳解)
這篇文章主要介紹了python更新數(shù)據(jù)庫中某個字段的數(shù)據(jù)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
使用matplotlib繪制并排柱狀圖的實戰(zhàn)案例
堆積柱狀圖有堆積柱狀圖的好處,比如說我們可以很方便地看到多分類總和的趨勢,下面這篇文章主要給大家介紹了關(guān)于使用matplotlib繪制并排柱狀圖的相關(guān)資料,需要的朋友可以參考下2022-07-07
Python confluent kafka客戶端配置kerberos認(rèn)證流程詳解
這篇文章主要介紹了Python confluent kafka客戶端配置kerberos認(rèn)證流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
Django contenttypes 框架詳解(小結(jié))
這篇文章主要介紹了Django contenttypes 框架詳解(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法
JSON(JavaScript Object Nonation)是利用鍵值對+嵌套來表示數(shù)據(jù)的一種格式,以其輕量、易解析的優(yōu)點,這篇文章主要介紹了利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換,需要的朋友可以參考下2019-07-07

