![1cb11f8a5c6891bc6362dbad0a2da987.png](https://i-blog.csdnimg.cn/blog_migrate/97b65896c9f26cd2ae2b37bcab8caaed.jpeg)
本篇文章是本人在看《机器学习实战》的代码注解笔记,修改了原作上的一些错误,经本人调试无误,如有任何问题,欢迎私信或者评论~
伪代码
创建k个起始质心
当任意点的簇分配改变时
对数据集中的点
对每个质心
计算点到质心的距离
记录距离最小值和簇号
将数据点分配给距离最小的簇
计算每个簇中的均值,作为下一次循环的质心
实现材料
- 三个数组(矩阵)
- 数据集 dataSet
- 质心集 centroids
- 评价集 clusterAssment --(簇索引,距离^2)
2. 标志位
- clusterChanged 一旦数据集中的点的簇分配发生改变,则继续循环优化质心
具体实现
def kMeans(dataSet, k, distMeans, createCent):
# 初始化质心集和评价集
centroids = createCent(dataSet, k)
# m为点个数
m = shape(dat