K-Means聚类MATLAB实现

来源:互联网 发布:2皇冠淘宝店铺转让 编辑:程序博客网 时间:2024/05/22 12:21

话不多说,直接上代码;

%k-meansn = 3000;c = 6;t = randperm(n);x = [randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2;    randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]';m = x(t(1:c),:);x2 = sum(x.^2,2);s0(1:c,1) = inf;for i = 1:6000    m2 = sum(m.^2,2);    [d,y] = min(repmat(m2,1,n)+repmat(x2',c,1)-2*m*x');    for j = 1:c        m(j,:) = mean(x(y==j,:));        s(j,1) = mean(d(y==j));    end    if norm(s-s0)<0.001, break, end    s0 = s;endfigure(1);clf;hold on;plot(x(:,1),x(:,2),'ko');figure(2);clf;hold on;plot(x(y==1,1),x(y==1,2),'ro');plot(x(y==2,1),x(y==2,2),'g-');plot(x(y==3,1),x(y==3,2),'b*');plot(x(y==4,1),x(y==4,2),'m+');plot(x(y==5,1),x(y==5,2),'y^');plot(x(y==6,1),x(y==6,2),'cx');
3 0