KMeans聚類(lèi)描述
聚類(lèi)是無(wú)監(jiān)督學(xué)習(xí),它將相似對(duì)象歸到同一個(gè)簇中,簇內(nèi)對(duì)象越相似,聚類(lèi)的效果越好。KMeans算法中k表示聚類(lèi)為多少個(gè)簇,means代表取每一個(gè)聚類(lèi)中數(shù)據(jù)的均值作為該簇的中心或稱(chēng)為質(zhì)心。
-
KMeans算法的流程:
(1)隨機(jī)確定k個(gè)質(zhì)心
(2)將數(shù)據(jù)集中每一個(gè)點(diǎn)找到距離其最近的質(zhì)心,并將其分配到對(duì)應(yīng)的簇
(3)每一個(gè)簇的質(zhì)心更新為該簇中所有點(diǎn)的均值
(4)重復(fù)2,3直到質(zhì)心無(wú)法再更新
3.圖解
假設(shè)有九個(gè)點(diǎn)分位三類(lèi) k=3
(1)圖中隨機(jī)選擇三個(gè)點(diǎn)
(1)
(2)把距離這三個(gè)點(diǎn)最近的其他點(diǎn)歸為一類(lèi)(簇)
(2)
(3)取當(dāng)前類(lèi)的所有點(diǎn)均值,作為中心點(diǎn)
(3)
(4)更新距離中心點(diǎn)最近的點(diǎn)
(4)
(5)再次計(jì)算被分類(lèi)點(diǎn)的均值作為新的中心點(diǎn)
(5)
(6)再次更新距離中心點(diǎn)最近的點(diǎn)
(6)
(7)計(jì)算中心點(diǎn)
(7)
(8)直到所有點(diǎn)無(wú)法再更新到其他分類(lèi)時(shí),算法結(jié)束。
sklearn實(shí)現(xiàn)鳶尾花的KMeans聚類(lèi)
from sklearn import datasets
iris = datasets.load_iris()
#print(iris)
#print(iris.data,type(iris.data))
#print(iris.target,type(iris.target))
#print(iris.target_names,type(iris.target_names))
#print(iris.feature_names,type(iris.feature_names))
#使用交叉驗(yàn)證,把數(shù)據(jù)集分位訓(xùn)練樣本和測(cè)試樣本集
from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest = train_test_split(iris.data,iris.target,test_size=0.1)
#建立模型
from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)
model.fit(xtrain)
pre = model.predict(xtrain)
center = model.cluster_centers_
print(pre,center)






