K-Means算法及Python实现

聚类是一种无监督学习,它将相似的对象划分到同一个簇中。通过这样的划分,每个簇可能对应一些潜在的类别。例如,西瓜可以被划分为“深色瓜”、“浅色瓜”、“有籽瓜”和“无籽瓜”等,这些概念对于聚类算法而言事先是未知的。基于不同的学习策略,人们设计出很多类型的聚类算法,下面我们主要介绍K-Means聚类算法并使用Python实现它。相似度计算前面提到,聚类算法视图将相似的对象归为同一簇,不相似的...
摘要由CSDN通过智能技术生成

聚类是一种无监督学习,它将相似的对象划分到同一个簇中。通过这样的划分,每个簇可能对应一些潜在的类别。例如,西瓜可以被划分为“深色瓜”、“浅色瓜”、“有籽瓜”和“无籽瓜”等,这些概念对于聚类算法而言事先是未知的。基于不同的学习策略,人们设计出很多类型的聚类算法,下面我们主要介绍K-Means聚类算法并使用Python实现它。

相似度计算

前面提到,聚类算法视图将相似的对象归为同一簇,不相似的对象归为不同簇。相似这一概念取决于所选择的相似度计量方法。常见的相似度计量方式有闵科夫斯基距离、欧氏距离和曼哈顿距离等。相关的概念及公式已经在KNN分类算法一文中阐述,这里就不再赘述。

K-Means算法

K-Means算法是一种原型聚类算法,原型聚类通常假设聚类结构能够通过一组原型刻画。这类算法首先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示或者不同的求解方式,就会得到不同的聚类算法。

K-Means可以发现给定数据集中的k个簇,簇的个数k是用户指定的,每一个簇通过其质心(即簇中所有点的中心)来描述。该算法的工作流程是这样的:首先随机确定k个初始点作为质心。然后为数据集中的每个点找到距离它最近的质心,并将其分配到该质心对应的簇中。这一步完成后,每个簇的质心更新为该簇所有点的平均值。重复上述过程直到质心基本不再变动,我们就可以得到最终代表每个簇的质心以及每个点最终被归类的簇。整个过程的伪代码如下:


输入:样本集 D={ x1,x2,,xm}; D = { x 1 , x 2 , … , x m } ;
   聚类簇数 k k
过程:
1:从 D 中随机选择 k k 个样本作为初始均值向量 { μ 1 , μ 2 , , μ k }
2:repeat
3: 令

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值