K-Means聚類

sklearn 的 iris 數(shù)據(jù)集里,樣本共有3種分類。我們拿它來演示一下 k-means。
假設(shè)我們不知道 iris 里的幾百個樣本是怎樣分類的,但是我們知道一共有3種分類,那么可以讓 k-means 聚類成3個簇。

獲取數(shù)據(jù)集

from sklearn.datasets import load_iris

iris = load_iris()
print(iris.feature_names)
print(iris.data[:5])
print("類別:{}".format(iris.target_names))

輸出:

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]
類別:['setosa' 'versicolor' 'virginica']

聚類

model = KMeans(n_clusters=3)
model.fit(iris.data)

predict = model.predict(iris.data)
print("聚類結(jié)果:")
print(predict)

輸出:

聚類結(jié)果:
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 0 0 0 0 2 0 0 0 0
 0 0 2 2 0 0 0 0 2 0 2 0 2 0 0 2 2 0 0 0 0 0 2 0 0 0 0 2 0 0 0 2 0 0 0 2 0
 0 2]

評估

使用輪廓系數(shù)來評估聚類效果:

score = silhouette_score(iris.data, predict)
print("輪廓系數(shù):{}".format(score))

輸出:

輪廓系數(shù):0.5525919445213676

輪廓系數(shù)的值在(-1, 1)之間。
一般來說,輪廓系數(shù)超過 0.1 就算是成功的聚類。 iris 數(shù)據(jù)集質(zhì)量很高,這次聚類的輪廓系數(shù)達(dá)到 0.55,可以說是非常不錯的結(jié)果了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容