MATLAB 聚类方法 K-means聚类

简介

k-means算法是著名的划分聚类分割方法。基本原理是,将数据分成K族,每

一族都有一个中心,称作聚类中心,族中的元素,与其他聚类中心的距离都大

于自己本族的聚类中心。聚类中心大多数情况都不是族中的元素,聚类中心的

X坐标,是族中所有元素的X坐标的平均值,Y坐标类推。

解决此类问题的关键点,在于寻找聚类中心的坐标。

算法具体步骤

(1)随机从数据中选择K个点,作为初始的聚类中心(因为初始聚类中心的选取与结果没有关系,所以可以随机取);

(2)计算各点到各个聚类中心的距离,距离哪一个最近就属于哪个族类;

(3)根据所有聚类的元素,计算平均X坐标,Y坐标,获得新聚类中心坐标;

(4)将新的聚类坐标与旧的聚类中心坐标作对比,是否发生变化,如果发生变化,则以新的聚类中心重复上述(2)、(3)步骤,如果没有发生变化,即可停止,获得的聚类中心即为所需的聚类中心。

总结

过程即是不断寻找聚类中心的过程,不断刷新知道聚类中心不再改变时,即

得到最佳聚类中心

动画演示代码(更形象表现出过程)

%% K-means 算法MATLAB实现
%--------------------------------------------------------------------------
%% 数据准备和初始化
clc
clear
x=[0 0;1 0; 0 1; 1 1;2 1;1 2; 2 2;3 2; 6 6; 7 6; 8 6; 6 7; 7 7; 8 7; 9 7 ; 7 8; 8 8; 9 8; 8 9 ; 9 9;10 1;11.2 2.6;11 5;4 6;5 7;3 6;4 1;1 3;1 0;1.5 3; 4 5;6 2;3 2;5 1;5 3;6 5;4 5;2 3;6 1];
z=zeros(2,2);
n=size(x); %计算x的行数,即求点的个数
z1=zeros(2,2) %记录初始中心的位置
z=x(1:2, 1:2) %初始聚类中心
h = scatter(z1(:,1),z1(:,2),'ob');  % scatter是绘制二维散点图的函数(这里返回h是为了得到图形的句柄,未来我们对其位置进行更新)
%% 寻找聚类中心
while 1
    count=zeros(2,1);
    allsum=zeros(2,2);
    for i
  • 5
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值