matlab聚类算法实现,K均值聚类算法的MATLAB实现

本文介绍了K-均值聚类算法的基本原理,并通过MATLAB代码详细展示了如何手动实现该算法。通过随机生成的数据点进行聚类,最终得出分类结果,展示聚类前后的数据点分布。
摘要由CSDN通过智能技术生成

1.K-均值聚类法的概述

之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理。最近因为在学模式识别,又重新接触了这种聚类算法,所以便仔细地研究了一下它的原理。弄懂了之后就自己手工用matlab编程实现了,最后的结果还不错,嘿嘿~~~

简单来说,K-均值聚类就是在给定了一组样本(x1, x2, ...xn) (xi, i = 1, 2, ... n均是向量) 之后,假设要将其聚为 m(

Step 1: 从 (x1, x2, ...xn) 中随机选择 m 个向量(y1,y2,...ym) 作为初始的聚类中心(可以随意指定,不在n个向量中选择也可以);

Step 2: 计算 (x1, x2, ...xn) 到这 m 个聚类中心的距离(严格来说为 2阶范数);

Step 3: 对于每一个 xi(i = 1,2,...n)比较其到 (y1,y2,...ym) 距离,找出其中的最小值,若到 yj 的距离最小,则将 xi 归为第j类;

Step 4: m 类分好之后, 计算每一类的均值向量作为每一类新的聚类中心;

Step 5: 比较新的聚类中心与老的聚类中心之间的距离,若大于设定的阈值,则跳到 Step2; 否则输出分类结果和聚类中心,算法结束。

OK,废话不多说,直接上Matlab代码。

copycode.gif% 利用K-均值聚类的原理,实现对一组数据的分类。这里以一组二维的点为例。

N = 40; % 点的个数

X = 10*rand(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值