【Kmeans】基于Kmeans的聚类算法的MATLAB仿真
生活随笔
收集整理的這篇文章主要介紹了
【Kmeans】基于Kmeans的聚类算法的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類中elseN2=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
總結
以上是生活随笔為你收集整理的【Kmeans】基于Kmeans的聚类算法的MATLAB仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【WSN同步捕获】无线传感器网络的同步捕
- 下一篇: 【SVM】通过SVM对数据进行训练和分类