【Machine Learning】K-means算法及C语言实现

本文详细介绍了K-means聚类算法的基本原理,包括其目标函数、迭代过程和优化方法,如K-means++算法。同时,讨论了类别个数自适应确定的ISODATA算法。最后,提供了K-means算法的C语言实现代码。
摘要由CSDN通过智能技术生成
聚类算法是一种无监督的分类方法,即样本预先不知所属类别或标签,需要根据样本之间的距离或相似程度自动进行分类。聚类算法可以分为基于划分的方法、基于连通性的方法、基于密度的方法、基于概率分布模型的方法等, K-means(K均值)属于基于划分的聚类方法。

一、基本原理
基于划分的聚类方法是将样本集组成的矢量空间划分为多个区域,每个区域都存在一个区域相关的表示,即区域中心。对于每个样本可以建立一种样本到区域中心的映射

其中l()为指数函数。
根据建立的映射q(x),可以将相应的样本分类到相应的中心,得到最终的划分结果。

不同的基于划分的聚类算法的主要区别在于如何建立相应的映射方式q(x)。在经典的K-means聚类算法中,映射是通过样本与各中心的之间的距离平方和最小准则来确立的。

假设有样本集合, K-means聚类算法的目标是将数据集划分为k(k<n)类:S = {S1, S2, ..., SK},使划分后的K个子集合满足类内的距离平方和最小:

其中,

求解目标函数是一个NP-hard问题,无法保证得到一个稳定的全局最优解。在经典的聚类算法中,采取迭代优化策略,有效地求解目标函数的局部最优解。

算法步骤如下
步骤1  初始化聚类中心,可选取样本集的前k个样本,或者随机选取k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值