📄 kmean.m
字号:
fid=fopen('E:\研究生课程\模式识别课程\homework1_1007\test1.TXT','r');
test1=fscanf(fid,'%f %f %c',[3,inf]);
fclose(fid);
f2=[0;0];
f1=[0;0];
N1=10;
N2=11;
for i=1:N1
f1(1,1)=f1(1,1)+test1(1,i);
f1(2,1)=f1(2,1)+test1(2,i);
end;
f1mean=f1/N1;
for i=N2:35
f2(1,1)=f2(1,1)+test1(1,i);
f2(2,1)=f2(2,1)+test1(2,i);
end;
f2mean=f2/N2;
J1=0;
J2=0;
J=0;
for i=1:N1
J1=J1+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1));
end;
for i=N2:35
J2=J2+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1));
end;
J=J1+J2;
detaJ=0;
for k=1:35
if(k<N1)
detaJ=N2/(N2+1)*J2-N1/(N1-1)*J1;
if(detaJ>0)
plot(k,test1(1,k),'k+');
end;
if(detaJ<0)
plot(k,test1(1,K),'r*');
f1=f1-test1(1:2,k);
f2=f2+test1(1:2,k);
N1=N1-1;
N2=N2+1;
f1mean=f1/N1;
f2mean=f2/N2;
J1=0;
J2=0;
J=0;
for i=1:10
J1=J1+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))-(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
end;
for i=11:35
J2=J2+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))+(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
end;
J=J1+J2;
detaJ=0;
end;
hold on;
end;
if(k>N1)
detaJ=N1/(N1+1)*J1-N2/(N2-1)*J2;
if(detaJ>0)
plot(k,test1(1,k),'r*');
end;
if(detaJ<0)
plot(k,test1(1,k),'k+');
f1=f1+test1(1:2,k);
f2=f2-test1(1:2,k);
N1=N1+1;
N2=N2-1;
f1mean=f1/N1;
f2mean=f2/N2;
J1=0;
J2=0;
J=0;
for i=1:10
J1=J1+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))+(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
end;
for i=11:35
J2=J2+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))-(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
end;
end;
J=J1+J2;
detaJ=0;
end;
hold on;
end;
title('K-means聚类');
xlabel('测试序号'),ylabel('身高(cm)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -