K-Means in matlab

matlab-kmeans函数注释

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)]; 产生100个样本点,行指向每个样本,列是维变量值。
opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,'Distance','city','Replicates',5,'Options',opts);
%返回参数意义:[IDX,C,sumd,D]=kmeans()
IDX:每个样本点所在的类别
C:所聚类别的中心点坐标位置k*p,k是所聚类别
sumd:每个类内各点到中心点的距离之和
D:每个点到各类中心点的距离n*k
--------------------------------函数调用示例---------------------------
X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];   %产生100个样本
opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,...
                    'Distance','city',...
                    'Replicates',5,...
                    'Options',opts);   %调用Kmeans函数
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)% 画出聚类为1,的点。X(idx==1,1),为第一类的样本的第一个坐标;X(idx==1,2)为第二类的样本的第二个坐标
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)%X(idx==2,1),X(idx==2,2)样本为第二类的第一个坐标,样本为第二类的第二个坐标
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)%绘出聚类中心点,kx表示是圆形
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)%%绘出聚类中心点,ko表示是叉形
legend('Cluster 1','Cluster 2','Centroids','Location','NW')%添加文字说明

posted @ 2012-04-11 14:40  HUJJ  阅读(1153)  评论(0编辑  收藏  举报