【Kmeans】基于Kmeans的聚类算法的MATLAB仿真

本文介绍了K-Means聚类算法的基本原理及其实现过程,详细解释了如何通过最小化簇内平方误差来优化聚类效果,并提供了一个使用MATLAB实现的具体示例。

0.完整源码获得方式

​​​​​​​方式1:微信或者QQ联系博主

方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码

1.软件版本

MATLAB2021a

2.本算法理论知识

K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。如果用数据表达式表示,假设簇划分为(C1,C2,...Ck)(C1,C2,...Ck),则我们的目标是最小化平方误差E:

E=∑i=1k∑x∈Ci||x−μi||22E=∑i=1k∑x∈Ci||x−μi||22

其中μiμi是簇CiCi的均值向量,有时也称为质心,表达式为:

μi=1|Ci|∑x∈Cixμi=1|Ci|∑x∈Cix

3.核心代码

function [U1,U2]=count(u1,u2,x)

N1=0;%第一类个数
N2=0;%第二类个数
for i=1:210
d1(i)=dis1(u1,x,i);%x中所有点到u1的欧式距离
d2(i)=dis2(u2,x,i);%x中所有点到u2的欧式距离
if d1(i)>d2(i)
    N1=N1+1;
    W1(N1,:)=x(i,:);%划分到W1类中
   
else
    N2=N2+1;
    W2(N2,:)=x(i,:);%划分到W2类中
     
end
end
%重新计算聚类中心
%W1类
u=[0 0];
for i=1:N1
u=u+W1(i,:);
end
U1=(u/N1);

%W2类
u=[0 0];
for i=1:N2
u=u+W2(i,:);
end
U2=(u/N2);
%在图中画出
%[~,~,r1,r2,r3,r4]=data3();
%plot(r1,r2,'.',r3,r4,'+');
%hold on;
for i=1:N1 r1(i)=W1(i,1);end;
for i=1:N1 r2(i)=W1(i,2);end;
for i=1:N2 r3(i)=W2(i,1);end;
for i=1:N2 r4(i)=W2(i,2);end;
figure(2);
plot(r1,r2,'ro',r3,r4,'ms');
title('k均值聚类');

4.操作步骤与仿真结论

5.参考文献

[1]黄韬, 刘胜辉, 谭艳娜. 基于k-means聚类算法的研究[J]. 计算机技术与发展, 2011, 21(7):5.

出处-类目-编

D198

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值