聚类之K-means算法理论及代码实现

一、K-means算法思想 

1.定义

是一种原型聚类。

原型表示:均值向量

迭代方式:根据均值向量的公式,重新计算出新的均值向量。

2.目标

簇内相似度高,簇外相似度低。即:紧密而独立

3.流程

随机挑选k个样本作为均值向量(初始化)——计算各个样本到均值向量的距离——划分样本到离其最近的均值向量所属的那个簇——重新计算每个簇的均值向量——重复2、3、4步直到均值向量不再被更新(改变)——结束

实际当中,为避免算法运行时间过长,不会运行到均值向量不再更新,而是会设置一个终止条件,当整个过程满足这个终止条件时,算法将结束。

终止条件可以是以下任意一个:

  • 没有(或最小数目)对象被重新分配给不同的聚类;
  • 没有(或最小数目)均值向量再发生变化;
  • 误差平方和局部最小。

4.算法要点

(1)计算距离时,K-means通常采用欧式距离

(2)计算均值向量时,采用公式:

二、补充背景知识

 1.监督学习和无监督学习

(1)监督学习:

指训练集有标签,学习得到的模型用于将测试集进行分类or回归

(2)无监督学习:

指训练集没有标签,学习得到的模型用于揭示数据的潜在内涵(不用测试集进行测试,而是用性能度量对结果进行评估)我猜的,待定

2.聚类的类型

根据算法思想进行分类,常见有原型聚类和密度聚类。

(1)原型聚类

思想:假设簇类结构可以通过一组具有代表性的样本(即:原型)来刻画

流程:初始化原型→迭代更新原型→直到所有原型不再变更→算法结束

核心:原型的表示+迭代的计算方式

(2)密度聚类

思想:假设簇类结构可以通过样本分布的紧密程度(即:密度)来刻画

流程:待补充

3.距离度量

当样本之间需要进行相似性度量(similarity measure)时,一般采用距离度量的方法来定义相似度。即:样本之间距离越大,相似度越低。

距离度量的计算方式有很多种,依据具体情况来选择。

e.g. 欧式距离,曼哈顿距离,切比雪夫距离等

三、代码实现

1.确定参数

①簇类的个数

k:int

②最大迭代次数

max_iterations: int

③用于判断算法是否收敛的参数:如果上一次的所有k个聚类中心与本次的所有k个聚类中心的差都小于varepsilon,则说明算法已经收敛

varepsilon: float

2.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值