第一周测试题-使用KMeans算法对其进行聚类,求聚类中心点

题目

假设有如下八个点:(3,1)(3,2)(4,1)(4,2)(1,3)(1,4)(2,3)(2,4),使用KMeans算法对其进行聚类。假设初始聚类中心点分别为(0,4)和(3,3),则最终的聚类中为(x , y)和(x,y)。

实现代码

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()

# 把数据点分组
clf = KMeans(n_clusters = 2)
clf.fit(points)

# 数据点的中心点
centers = clf.cluster_centers_
print(centers)

# 每个数据点所属分组
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)

# 预测
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()

参考资料:博客

可视化显示

第一周测试题-使用KMeans算法对其进行聚类,求聚类中心点_第1张图片
show()输出的图像@2x.png

*为两组数据的中心点,x为预测的中心点

你可能感兴趣的:(第一周测试题-使用KMeans算法对其进行聚类,求聚类中心点)