K-MEANS算法及sklearn實現


K-MEANS算法

聚類概念:

1.無監督問題:我們手里沒有標簽

2.聚類:相似的東西分到一組

3.難點:如何評估,如何調參

4.要得到簇的個數,需要指定K值

5.質心:均值,即向量各維取平均即可

6.距離的度量:常用歐幾里得距離和余弦相似度

7.優化目標:min$$ min \sum_{i=0}^k \sum_{C_j=0} dist(c_i,x)^2$$

工作流程:

(a)讀入數據

(b)隨機初始化兩個點

(c)計算每個點到質心的距離,離那個質心距離近,就暫時歸為那類

(d)重新計算評估指標,更新質心,執行c動作

(e)重新更新質心

(f)重新計算質心的距離,進行分類,直到質心不在發生變化

優勢:

簡單、快速、適合常規數據集

劣勢:

K值難確定

復雜度與樣本呈線性關系

很難發現任意形狀的簇,如下圖:

 

sklearn實現

#數據讀入

# beer dataset
import pandas as pd 
beer = pd.read_csv('data.txt',sep=' ')
beer

X = beer[["calories","sodium","alcohol","cost"]]
from sklearn.cluster import KMeans
km = KMeans(n_clusters = 3).fit(X)
km2 = KMeans(n_clusters = 2).fit(X)
print(km.labels_)
array([0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 1, 0, 0, 1, 2])
beer['cluster'] = km.labels_
beer['cluster1'] = km2.labels_
beer.sort_values('cluster')
beer.sort_values('cluster1')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM