k均值算法原理及matlab实现

k均值算法是一种用于坐标点聚类的方法,通过迭代寻找最优类心。算法包括初始化类心、按距离分配点、更新类心、判断停止条件等步骤。MATLAB代码可用于实际操作。
摘要由CSDN通过智能技术生成

k均值算法

简单的说,k均值算法是将一些坐标点,按距离划分,聚为k类(k为先设置的值)。例:对以下点的坐标进行聚类
在这里插入图片描述坐标点的数量很多,可以通过k均值算法进行聚类。k均值算法的思路是,先初始化k个类心,将所有坐标点归在这些类里,一次次寻找新的类心使聚类效果更佳,直至用k均值算法无法找到更优化的解。
k均值算法的代码及分析
第一步:初始随机选择k个点作为类心。
分析:先随机找一个解,作为初始可行解。故初始解会影响聚类的速度和最终聚类结果(陷入局部最优解)。可以通过多次随机选取初始解找到较优的结果。
第二步:将所有点,按距离分到最近的类心里,得到k个类。
分析: 样本点归在最近的类心比其他归类方式更优。
第三步:类内寻找新类心
方法:新类心的横纵坐标为原来类内所有点横纵坐标的平均值。
分析:对于一片数据点来说,数据点的中心(坐标的平均值),离这些点的总距离最短。
类内距离:在这里插入图片描述
其中xi,yi为类内点的横纵坐标,x*,y*为类心的横纵坐标。当类心坐标为类内点坐标的平均值时,类内距离最小。(证明类似最小二乘法)。
故第三步使聚类效果更优化。

第四步:若类心有变化则返回第二步,若类心没有改变,则聚类结束。
分析:通过第二步、第三步不断优化聚类效果,找到更优化的解,直到类心无变化,说明无法找到更优化的解。
matlab代码

k = 5; %先设定聚类数量
[d,fff] = size(point);%d为样本点的个数
%第一步:初始随机选择k个点作为类心。
leixin = zeros(k,2);
suiji = randperm(d);
for i = 1:1:k
   leixin(i,
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值