Kmeans聚类算法

  • A+
所属分类:专业基础 科研汇报

核心目标:将给定的数据集划分成K个簇(K是超参),并给出每个样本数据对应的中心点。

具体流程:

Kmeans聚类算法

距离度量:

1.欧式距离

Kmeans聚类算法

2.曼哈顿距离

 

Kmeans聚类算法

3.余弦相似度

Kmeans聚类算法

动画演示Kmeans过程:

1.将数据点聚成k个簇

Kmeans聚类算法

2.随机生成k个簇中心,设k=2

Kmeans聚类算法

3.将每个数据点与其最近的簇中心连接Kmeans聚类算法

4.将连接到同一个簇中心的数据点聚为同一类Kmeans聚类算法

5.每个簇的平均点作为新的簇中心Kmeans聚类算法

6.重复上述过程,当迭代的簇中心不再发生变化时,聚类完成Kmeans聚类算法

来源: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()

Kmeans聚类算法

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

Kmeans聚类算法

聚类结果

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: