人工智能与机器学习-K-Means(k-均值)聚类算法

K-means算法术语

  • 簇:所有数据点的集合,簇中的对象是相似的
  • 质心:簇中所有数据点的中心(计算所有点的均值而定)
  • SSE:Sum of Sqared Error(平方误差和)

              SSE值越小,表示越接近它们的质心,由于对误差取了平方,因此更加专注远离中心的点

K-Means工作流程

  1. 首先,随机确定K个初始点作为质心(不是数据中的点)
  2. 然后将数据集中的每个点分配到一个簇中,具体来讲,就是为每个点找到距离最近的质点,并将其分配该质点所对应的簇,这一步完成以后,每个簇的质心,更新为该簇所有点的平均值.

创建K个点作为初始质点 当任意一个点的簇分配结果发生变化时

伪码

  •       对数据集中的每个数据点
  •              对每个质心
  •                    计算质心与数据点之间的距离
  •                将数据点分配到距离其最近 的簇
  •       对每一个簇计算簇中所有点的均值,并将均值作为质心  

K-means开发流程

  • 收集数据:使用任意方法
  • 准备数据:需要数值型数据类计算距离,也可以将标称型数据映射为二值数据在用于计算
  • 分析数据:使用任意方法
  • 训练算法:此步骤不适用于k-means算法
  • 测试算法:应用聚类算法,观察结果。可以使用量化的误差指标(误差平方和)来评价算法的结果
  • 使用算法:可以应用于所希望的任何应用。通常情况下,簇质心可以代表整个簇的数据;来做出决策

将文件加载数据集

计算两个向量的欧氏距离

欧氏距离欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个 点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之 间的实际距离。

构建包含K个随机质心的集合

 

K-Means聚类算法的缺陷

可能偶尔会陷入最小值(局部最优,但全局不是最优),如图

为了克服K-Means算法收敛于最小值的情况,提出了二分K-Means算法

二分K-Means聚类算法

  • 该算法首先将所有点作为一个簇,然后将簇一分为二。
  • 然后选择其中一个簇进行划分,选择哪一个簇进行划分取决于对其划分时候可以最大程度降低SSE(平方和误差)的值。
  • 上述基于SSE的划分过程不断重复,直到得到用户指定的簇数目为止。

二分K-Means簇类算法伪代码

  • 将所有点看成一个簇
  • 当簇数目小于k时
  • 对于每一个簇
  •       计算总误差
  •       在给定的簇上面进行K-Means聚类(K=2)
  •       计算将该簇一分为二之后的总误差
  • 选择使得误差最小的那个簇进行划分操作

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值