python資料分析與挖掘之聚類kmeans演算法
阿新 • • 發佈:2018-12-08
聚類不指定類別進行分類
(劃分(分裂)法,層次分析法、密度分析法)、網格法、模型法
Kmeans演算法屬於分裂法
- 隨機選擇k各點作為聚類中心
- 計算各個點到這K個點的距離
- 將對應的點聚到與它最近的這個聚類中心
- 重新計算聚類中心
- 比較當前聚類中心與前一次聚類中心,如果是同一個點,得到聚類結果,若不同的點,則重複2-5
Kmeans演算法實現程式碼:
#kmeans演算法 ''' #通過程式聚類實現實現錄取學生的聚類 import pandas as pda import numpy as npy import matplotlib.pylab as pyl fname='E:\\programCode\\huigui.csv' dataf=pda.read_csv(fname) x=dataf.iloc[:,1:4].as_matrix() from sklearn.cluster import Birch from sklearn.cluster import KMeans kms=KMeans(n_clusters=4,n_jobs=2,max_iter=500)#聚為4類,執行緒數為2,最大迴圈次數500 y=kms.fit_predict(x)#進行聚類 #視覺化 #x代表學生序號,y代表學生類別 s=npy.arange(0,len(y)) pyl.plot(s,y,'o') pyl.show() ''' #通過程式實現商品的聚類 import pandas as pda import numpy as npy import matplotlib.pylab as pyl import pymysql conn=pymysql.connect(host='localhost',user='root',passwd='123456',db='dd') sql="select price,comment from jd limit 300" dataf=pda.read_sql(sql,conn) x=dataf.iloc[:,:].as_matrix() from sklearn.cluster import KMeans kms=KMeans(n_clusters=3) y=kms.fit_predict(x) for i in range(0,len(y)): if(y[i]==0): pyl.plot(dataf.iloc[i:i+1,0:1].as_matrix(),dataf.iloc[i:i+1,1:2].as_matrix(),'*r') elif(y[i]==1): pyl.plot(dataf.iloc[i:i+1,0:1].as_matrix(),dataf.iloc[i:i+1,1:2].as_matrix(),'sy') else: pyl.plot(dataf.iloc[i:i+1,0:1].as_matrix(),dataf.iloc[i:i+1,1:2].as_matrix(),'*k') pyl.show()