#導入scipy庫,庫中已經有實現的kmeans模塊,直接使用, #根據六個人的分數分為學霸或者學渣兩類 import numpy as np from scipy.cluster.vq import vq,kmeans,whiten list1=[88,64,96,85] list2=[92,99,95,94] list3=[91,87,99,95] list4=[78,99,97,81] list5=[88,78,98,84] list6=[100,95,100,92] #將數據組成數組 data=np.array([list1,list2,list3,list4,list5,list6]) #數據歸一化處理 whiten=whiten(data) #使用kmeans聚類,第一個參數為數據,第二個參數是k類,得到的結果是二維的,所以加一個下划線表示不取第二個值,第一個值為得到的聚類中心,第二個值為損失 centroids,_=kmeans(whiten,2) #使用vq函數根據聚類中心將數據進行分類,輸出的結果為二維,第一個結果為分類的標簽,第二個結果不需要。 result,_=vq(whiten,centroids) print(result)
輸出結果:
[0 1 1 0 0 1]
根據數據可以看出0為學渣,1為學霸。
6個人中,1、4、5為學渣,2,3,6為學霸。
以上為使用Scipy中kmeans來求解的。
sklearn
import numpy as np from sklearn.cluster import KMeans list1=[88,64,96,85] list2=[92,99,95,94] list3=[91,87,99,95] list4=[78,99,97,81] list5=[88,78,98,84] list6=[100,95,100,92] #將數據組成數組 data=np.array([list1,list2,list3,list4,list5,list6]) #采用fit函數和predict函數 kmeans=KMeans(n_clusters=2).fit(data) pred=kmeans.predict(data) print(pred)