1.(x,y)为二维空间里面的点,x,y都取值为0到100的整数,在此空间随机生成不低于30个点(算法中可以不处理随机生成中的重复问题,也可以处理),使用聚类算法,分别生成四个类(类间距离使用平均距离),并图示结果。2.同样数据集,类间距离分别使用最短距离和最长距离,并图示结果。
这是最简单的调包法,要是可以剩下的就靠自己调参了。
# 1、导入数据
import numpy as np
data = np.random.randint(0,101,size=(100,2))
# 2、可视化
import matplotlib.pyplot as plt
plt.scatter(data[:, 0], data[:, 1], c="red", marker='o', label='samples') # 以红色圆圈样式绘制散点图并加上标签
plt.legend() # 设置图例,图例内容为上面设置的label参数
plt.show()
# 3、数据聚类
from sklearn.cluster import KMeans
kms = KMeans(n_clusters=4)
kms.fit(data)
# 4、获取分类结果
label = kms.labels_
# 5、分类可视化
plt.scatter(data[label == 0][:, 0], data[label == 0][:, 1], c="red", marker='o', label='class0') # 以红色圆圈样式绘制散点图并加上标签
plt.scatter(data[label == 1][:, 0], data[label == 1][:, 1], c="green", marker='*', label='class1') # 以绿色星星样式绘制散点图并加上标签
plt.scatter(data[label == 2][:, 0], data[label == 2][:, 1], c="blue", marker='+', label='class2') # 以蓝色加号样式绘制散点图并加上标签
plt.scatter(data[label == 3][:, 0], data[label == 3][:, 1], c="yellow", marker='^', label='class3') # 以黄色三角样式绘制散点图并加上标签
plt.legend() # 设置图例