一、参考《机器学习与实践》
K均值聚类是一种通过距离公式把属性相近对象划分到同一类的算法,此算法对异常点和质心的选取较为敏感。二分k均值聚类是K均值聚类改进(还有一种是K中值聚类),是一种层次聚类方法,以K均值聚类为基础,通过比较和方差得到最好的分法。
K均值聚类步骤
1.得到K个数据范围类的随机质心
2.把数据划分给最近的质心得到K个簇
3.通过每个簇的平均值算出新的质点
4.重复2和3直到不再改变
二分K均值聚类
1.初始化质心和并算出每个点到质心的距离
2.分成两个簇后计算和方差选取最小误差为最好的分配方法
3.重新分配簇和质心
4.重复2和3达到K个类
python代码实现:
import numpy as np
from matplotlib import pyplot as plt
data=np.array( [
[1.658985, 4.285136],
[-3.453687, 3.424321],
[4.838138, -1.151539],
[-5.379713, -3.362104],
[0.972564, 2.924086],
[-3.567919, 1.531611],
[0.450614, -3.302219],
[-3.487105, -1.724432],
[2.668759, 1.594842],
[-3.156485, 3.191137],
[3.165506, -3.999838],
[-2.786837, -3.099354],
[4.208187, 2.984927],
[-2.123337, 2.943366],
[0.704199, -0.479481],
[-0.392370, -3.963704],
[2.831667, 1.574018],
[-0.790153, 3.343144],
[2.943496, -3.357075],
[-3.195883, -2.283926],
[2.336445, 2.875106],
[-1.786345, 2.554248],
[2.190101, -1.906020],
[-3.403367, -2.778288],
[1.778124, 3.880832],
[-1.688346, 2.230267],
[2.592976, -2.054368],
[-4.007257, -3.207066],
[2.257734, 3.387564],
[-2.679011, 0.785119],
[0.939512, -4.023563],