- A+
核心目标:将给定的数据集划分成K个簇(K是超参),并给出每个样本数据对应的中心点。
具体流程:
距离度量:
1.欧式距离
2.曼哈顿距离
3.余弦相似度
动画演示Kmeans过程:
1.将数据点聚成k个簇
2.随机生成k个簇中心,设k=2
3.将每个数据点与其最近的簇中心连接
4.将连接到同一个簇中心的数据点聚为同一类
5.每个簇的平均点作为新的簇中心
6.重复上述过程,当迭代的簇中心不再发生变化时,聚类完成
来源:KMeans聚类原理 动画演示_哔哩哔哩_bilibili
使用KMeans对鸢尾花数据集聚类:
1 2 3 4 | import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn import datasets |
导入数据
1 2 3 | iris=datasets.load_iris() X=iris.data[:,2:4] print(X.shape) |
1 2 3 4 | plt.scatter(X[:,0],X[:,1],c='red',marker='o',) plt.xlabel('petal length') plt.ylabel('petal width') plt.show() |
1 2 3 | from sklearn.cluster import KMeans estimator=KMeans(n_clusters=3) estimator.fit(X) |
聚类
1 2 3 4 5 6 7 8 9 10 11 | label_pred=estimator.labels_ #获取聚类标签 x0=X[label_pred==0] x1=X[label_pred==1] x2=X[label_pred==2] plt.scatter(x0[:,0],x0[:,1],c='red',marker='o',label='label0') plt.scatter(x1[:,0],x1[:,1],c='green',marker='*',label='label1') plt.scatter(x2[:,0],x2[:,1],c='blue',marker='+',label='label2') plt.xlabel('petal length') plt.ylabel('petal width') plt.legend(loc=2) plt.show() |
聚类结果

XCJinggai的微信
这是我的微信二维码,有任何问题请加微信联系我!或发送邮件至lqzhangfengxi@163.com