Python笔记11------一个K-means聚类的小例子
#导入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)