本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
本文展示一个简单的python实现的k-means聚类代码Demo.并展示最后的聚类结果
本节介绍本文代码所实现的内容
k-means代码简介
代码先以5个中心点随机生成150个样本点,
然后使用k-means聚类找出5个类别的中心点
聚类过程
使用k-means算法,先初始化5个聚类中心点,
然后根据k-means的迭代规则,不断调5个聚类中心点的位置
经过20轮迭代后,输出聚类中心点的位置
最后,根据样本所属的聚类中心点,给样本标上颜色
聚类结果如下:
可以看到,每簇样本点都被标上了不同的颜色,说明k-means聚类是成功的
本节展示K-MEAN的实现代码
k-means实现代码
k-means的实现代码如下
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=150, random_state=10,centers=5) #生成数据
n_sample = X.shape[0]
#设置k值
k = 5
# plt.scatter(X[:, 0], X[:, 1])
# plt.axis('off')
#随机选择k个样本作为中心
init_idx = np.random.randint(0,n_sample,k)
c = X[init_idx,:]
#聚类过程
c_idx = np.zeros(n_sample)#样本的类别
for t in range(20):
#更新样本所属类别
for i in range(n_sample):
c_idx[i] = np.argmin(((c - X[i])**2 ).sum(axis=1))
# 更新类别中心
for i in range(k):
c[i] = X[c_idx==i].mean(axis=0)
#展示结果,以颜色标示类别
plt.scatter(X[:, 0], X[:, 1], c=c_idx)
plt.axis('off')
运行结果
运行代码后可得到Kmeans的聚类结果如下:
以上就是k-means代码的Demo了~
End