資源簡介
之前學習并詳細總結了一篇k-均值(k-means)算法文章,于是順便提供Matlab代碼實現,這份代碼通過Matlab隨機生成三組數據,然后進行聚類實現。還有另一份較復雜的實現代碼可動態實現k-均值的聚類過程,具體可查看個人CSDN資源
代碼片段和文件信息
%?第一組數據??
mu1=[0?0?];??%均值??
S1=[.1?0?;0?.1];??%協方差??
data1=mvnrnd(mu1S1100);???%產生高斯分布數據??
%第二組數據??
mu2=[1.25?1.25?];??
S2=[.1?0?;0?.1];??
data2=mvnrnd(mu2S2100);??
%?第三組數據??
mu3=[-1.25?1.25?];??
S3=[.1?0?;0?.1];??
data3=mvnrnd(mu3S3100);??
%?顯示數據??
plot(data1(:1)data1(:2)‘b+‘);??
hold?on;??
plot(data2(:1)data2(:2)‘r+‘);??
plot(data3(:1)data3(:2)‘g+‘);??
grid?on;??
%??三類數據合成一個不帶標號的數據類??
data=[data1;data2;data3];???
N=3;%設置聚類數目??
[mn]=size(data);??
pattern=zeros(mn+1);??
center=zeros(Nn);%初始化聚類中心??
pattern(:1:n)=data(::);??
for?x=1:N??
????center(x:)=data(?randi(3001):);%第一次隨機產生聚類中心??
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_
- 上一篇:simuli
nk練習題個人編寫 - 下一篇:Chameleon算法Matlab實現
評論
共有 條評論