首页 > 技术文章 > K-means聚类分析MATLAB代码

qrzxj 2015-09-07 15:52 原文

function kmeans
load q1x.dat;
a1=round(98*rand+1);
a2=round(98*rand+1);
miao1=[q1x(a1,1),q1x(a1,2)];
miao2=[q1x(a2,1),q1x(a2,2)];
c=zeros(99,1);
sum1=zeros(1,2);
sum2=zeros(1,2);
for k=1:1
for i=1:99
    temp1=norm(q1x(i,:)-miao1)^2;
    temp2=norm(q1x(i,:)-miao2)^2;
if temp1<temp2
    c(i)=1;
    sum1(1,1)=sum1(1,1)+q1x(i,1);
    sum1(1,2)=sum1(1,1)+q1x(i,2);  
else
    c(i)=2;
    sum2(1,1)=sum2(1,1)+q1x(i,1);
    sum2(1,2)=sum2(1,1)+q1x(i,2);
end
end
e1=find(c==1);
e2=find(c==2);
miao1=[sum1(1,1)/length(e1),sum1(1,2)/length(e1)];
miao2=[sum2(1,1)/length(e2),sum2(1,2)/length(e2)];
end
for j=1:99
    if c(j)==1
       plot(q1x(j,1),q1x(j,2),'o');
       hold on;
    else
       plot(q1x(j,1),q1x(j,2),'r*');
       hold on; 
    end
end
数据集依旧来自Ng的qx1。可能是由于数据集的缘故(这个数据集是用来做logistic回归的...我比较懒就没去找新的...),迭代次数k一旦超过了2就会产生灾难性的后果~~~留着这个坑以后慢慢填~~~

版权声明:本文为博主原创文章,未经博主允许不得转载。

推荐阅读