K-均值聚类算法

本文介绍了K-均值聚类算法的工作原理和流程,包括选择初始质心、分配数据点到最近的簇、更新质心等步骤。提供了一个用于加载数据的辅助函数loadDataSet和计算距离的disEclud函数。此外,还详细解释了主函数kMeans的实现,包括如何判断簇分配结果是否变化、如何更新质心以及如何终止迭代。
摘要由CSDN通过智能技术生成

聚类是一种无监督学习,它将相似的对象归到同一个簇中,有点像全自动分类。聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好。聚类与分类的最大不同在于,分类的目标事先已知,而聚类则不一样。因为其产生的结果与分类相同,而只是类别没有预先定义,聚类有时也成为无监督分类。相似这一概念取决于所选择的相似度计算方法。
K-均值算法的工作流程是:首先随机确定K个初始点作为质点。然后将数据集中的每个点分配到一个簇中,具体来说,为每个点找距其最近的质心,并将其分配给该质心所对应的簇。这一步完成之后,每个簇的质心更新为该簇所有点的平均值。

程序清单1-1:K-均值聚类辅助函数

 def loadDataSet(filename):
     dataMat = []
     fr = open(filename)
     for line in fr.readlines():
        curLine = line.strip().split('\t')
        fltLine = map(float,curLine)
        dataMat.append(fltLine)
     return dataMat

loadDataSet函数将文本文件导入到一个列表中。strip移除字符串头尾指定的字符,split指定分隔符对字符串进行切片;map(function,sequence[…,sequence,…])对sequence中的item依次执行function(item),执行结果输出为list。每一个列表会被添加到dataMat中,最后返回dataMat。该返回值是一个包含许多其他列表的列表。

def disEclud(vecA,vecB):
  return s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值