TODO
K-均值(K-means)算法是无监督算法,也是聚类(clustering)算法。
算法步骤
- 随机初始化几个点作为簇的质心,初始化方式有多种,可以自行选择。已知两种:
- 随机选择K个样本作为簇的质心。来源于吴恩达机器学习视频
- min + (max - min) * (0到1之间的小数),其中最大值最小值均代表。来源于《机器学习实战》
- 计算某个样本到每个簇的质心之间的代价(距离),代价函数有多种可自行选择。比如:
- 均方误差(mse) 选出其中最小的代价,并求出簇的索引,然后将该样本划分给该质心所属的簇。每个样本都执行这步直到样本遍历完毕。
- 经过步骤2,每个样本都归属于一个簇。然后遍历每一个簇,将簇中的数据求均值,将该均值作为簇的新质心。
- 重复以上步骤,直到发现每个样本都归属于某个簇,并且样本归属不会再发生变化。 简化如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14随机初始化质心
while true
for 每个样本
for 每个质心
计算每个样本到质心的代价
选出最小的代价
将样本分配给这个簇
for 每个质心
求出该簇所属的样本的均值
将该均值设置为簇的新质点
if 样本归属不再发生变化
break