matlab实现kmeans算法

matlab实现kmeans算法

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

算法分为两步:

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

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

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

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

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

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');

实验结果:

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值