-
大小: 2KB文件類型: .m金幣: 1下載: 0 次發(fā)布日期: 2021-05-27
- 語言: Matlab
- 標簽: k-means??k-均值??聚類算法??Matlab實現(xiàn)??
資源簡介
之前學(xué)習并詳細總結(jié)了一篇k-均值(k-means)算法文章,于是順便提供Matlab代碼實現(xiàn),這份代碼通過Matlab隨機生成三組數(shù)據(jù),然后進行聚類實現(xiàn)。還有另一份較復(fù)雜的實現(xiàn)代碼可動態(tài)實現(xiàn)k-均值的聚類過程,具體可查看個人CSDN資源
代碼片段和文件信息
%?第一組數(shù)據(jù)??
mu1=[0?0?];??%均值??
S1=[.1?0?;0?.1];??%協(xié)方差??
data1=mvnrnd(mu1S1100);???%產(chǎn)生高斯分布數(shù)據(jù)??
%第二組數(shù)據(jù)??
mu2=[1.25?1.25?];??
S2=[.1?0?;0?.1];??
data2=mvnrnd(mu2S2100);??
%?第三組數(shù)據(jù)??
mu3=[-1.25?1.25?];??
S3=[.1?0?;0?.1];??
data3=mvnrnd(mu3S3100);??
%?顯示數(shù)據(jù)??
plot(data1(:1)data1(:2)‘b+‘);??
hold?on;??
plot(data2(:1)data2(:2)‘r+‘);??
plot(data3(:1)data3(:2)‘g+‘);??
grid?on;??
%??三類數(shù)據(jù)合成一個不帶標號的數(shù)據(jù)類??
data=[data1;data2;data3];???
N=3;%設(shè)置聚類數(shù)目??
[mn]=size(data);??
pattern=zeros(mn+1);??
center=zeros(Nn);%初始化聚類中心??
pattern(:1:n)=data(::);??
for?x=1:N??
????center(x:)=data(?randi(3001):);%第一次隨機產(chǎn)生聚類中心??
end??
while?1??
distence=zeros(1N);??
num=zeros(1N);??
new_center=zeros(Nn);??
???
for?x=1:m??
????for?y=1:N??
????distence(y)=norm(data(x:)-center(y:));%計算到每個類的距離??
????end??
????[~?temp]=min(distence);%求最小的距離??
????pattern(xn+1)=temp;???????????
end??
k=0;??
for?y=1:N??
????for?x=1:m??
????????if?pattern(xn+1)==y??
???????????new_center(y:)=new_
評論
共有 條評論