K-means聚类分析MATLAB代码

时间:2023-09-22 16:54:50
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就会产生灾难性的后果~~~留着这个坑以后慢慢填~~~

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