您的位置:首页 > 编程语言 > MATLAB

matlab实现kmeans算法

2015-05-13 15:32 1541 查看

matlab实现kmeans算法

kmeans是一种聚类算法(无监督学习)。

算法分为两步:

1.随机选取k个聚类中心。

2.计算每个样本点离哪个聚类中心最近(距离计算)就将该样本分为这个类。

3.重新计算这k个类的聚类中心。一种简单的计算方法为:计算每个类的平均值即为新的聚类中心。重复执行步骤2,直到聚类中心的变化小于给定阈值,或者达到迭代次数,即停止聚类。

这里只是简单理解,并未深入去考虑k的选择,初始聚类中心的选择对算法的影响。

下面给出一个利用matlab自带kmeans函数实现聚类的实例

close all;

[code]clc;
x=[randn(100,2)*1e2;randn(100,2)*2e2;randn(100,2)*3e2;...
randn(100,2)*4e2;randn(100,2)*5e2;randn(100,2)*6e2];
figure,plot(x(:,1),x(:,2),'.');
[idx,ctrs]=kmeans(x,6);
figure,plot(x(idx==1,1),x(idx==1,2),'.r');
hold on
plot(x(idx==2,1),x(idx==2,2),'.b');
hold on
plot(x(idx==3,1),x(idx==3,2),'.m');
hold on
plot(x(idx==4,1),x(idx==4,2),'.g');
hold on
plot(x(idx==5,1),x(idx==5,2),'.k');
hold on
plot(x(idx==6,1),x(idx==6,2),'.c');
title('kmeans 聚类算法')
plot(ctrs(:,1),ctrs(:,2),'xb');
plot(ctrs(:,1),ctrs(:,2),'ob');


实验结果:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: