基于k的聚类意味着质心

时间:2017-04-27 07:24:25

标签: matlab cluster-analysis k-means

我有1500名患者的肺部图像,我正在尝试使用kmean来解决我的问题。我的问题是,我想对一名患者应用k均值(有230张图像),然后保存该患者的质心,我想根据这个质心对其他患者应用kmeans。这是matlab代码。     [idx,C] = kmeans(data,80) 现在,我有C但是我应该怎么做才能使用它并在其他图像上应用这个质心呢?

这里'我的数据是什么样的,我根据这些图像的直方图进行聚类。

Img1   histogram with 16 bins
Img2   Histo gram with 16 bins
Img3   // // // // // // //
Img4   // / / / // /// // / 
 .
 .
 .

任何教程或任何可能有用的内容,请建议。谢谢。

1 个答案:

答案 0 :(得分:1)

Kmeans最近中心确定的每个点的成员资格。因此,在拥有中心后,您可以通过检查每个中心的距离来保持关联更多点数。在matlab中,您可以使用pdist2

轻松完成
dim = 2;
n = 100;
% generate two data sets
data1 = rand(n,dim);
data2 = rand(n,dim);
% computing membership & clusters using kmeans on data1
k = 5;
[idx1,C] = kmeans(data1,k);
% computing membership using pairwise distance on data2
D = pdist2(data2,C);
[~,idx2] = min(D,[],2);
% plot centers
scatter(C(:,1),C(:,2),100,1:k,'*')
hold on
% plot data1
scatter(data1(:,1),data1(:,2),30,idx1,'filled')
% plot data2
scatter(data2(:,1),data2(:,2),30,idx2)
legend('centers','data1','data2')

如果您愿意,您甚至可以使用Voronoi图绘制成员资格限制:

voronoi(C(:,1),C(:,2));

enter image description here