第一周測(cè)試題-使用KMeans算法對(duì)其進(jìn)行聚類(lèi),求聚類(lèi)中心點(diǎn)

題目

假設(shè)有如下八個(gè)點(diǎn):(3,1)(3,2)(4,1)(4,2)(1,3)(1,4)(2,3)(2,4),使用KMeans算法對(duì)其進(jìn)行聚類(lèi)。假設(shè)初始聚類(lèi)中心點(diǎn)分別為(0,4)和(3,3),則最終的聚類(lèi)中為(x , y)和(x,y)。

實(shí)現(xiàn)代碼

import numpy as np
from sklearn.cluster import KMeans
from matplotlib import pyplot
 
points = np.array([[3,1],[3,2],[4,1],[4,2],[1,3],[1,4],[2,3],[2,4]])
# pyplot.scatter(points[:,0],points[:,1])
# pyplot.show()

# 把數(shù)據(jù)點(diǎn)分組
clf = KMeans(n_clusters = 2)
clf.fit(points)

# 數(shù)據(jù)點(diǎn)的中心點(diǎn)
centers = clf.cluster_centers_
print(centers)

# 每個(gè)數(shù)據(jù)點(diǎn)所屬分組
labels = clf.labels_
# print(labels)

for i in range(len(labels)):
    pyplot.scatter(points[i][0], points[i][1], c=('r' if labels[i] == 0 else 'b'))
    pyplot.scatter(centers[:,0],centers[:,1], marker='*', s=100)

# 預(yù)測(cè)
predict = [[1.5,1.5], [3.5,3.5]]
label = clf.predict(predict)
for i in range(len(label)):
    pyplot.scatter(predict[i][0], predict[i][1], c=('r' if label[i] == 0 else 'b'), marker='x')

pyplot.show()

參考資料:博客

可視化顯示

show()輸出的圖像@2x.png

*為兩組數(shù)據(jù)的中心點(diǎn),x為預(yù)測(cè)的中心點(diǎn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容