K-means聚类分析MATLAB代码

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就会产生灾难性的后果~~~留着这个坑以后慢慢填~~~

    原文作者:聚类算法
    原文地址: https://blog.csdn.net/qrlhl/article/details/48266715
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞