在另一个函数中使用聚类索引



我已经在一些数据集(500x39 矩阵)上使用 Matlab 中的内置函数进行了一些 k 均值聚类分析。选择 7 个集群。从:

[idx,C] = kmeans(Data',No_Clusters)

我得到我的聚类索引 idx (39x1) 和质心位置 c (500x7)。

然后,我想在在线提供的多块 PCA 函数中使用此 idx 输出和我的数据集 (http://www.models.life.ku.dk/~courses/MBtoolbox/mbtmain.htm)。所以就说我的idx是

idx = 5 4 1 5 7 3 2 6 7 1 3 ... 

对于数据集中的每一列。我想安排它给我

[3,10][7][6,11][2][1,4][8][5,9]

其中 [] 中的每个数字对应于数据集中用于聚类idx的列。

您可以使用

accumarray来确定每个唯一索引的位置

result = accumarray(idx(:), (1:numel(idx)).', [], @(x){x})

从本质上讲,它使用您的idx arrray(第一个输入)将值(对应于指定为第二个输入的每个值的列索引)"分组"在一起,并对每个组执行操作,在这种情况下,这只是一个匿名函数,它将组中的所有值放入单元格数组中。

相关内容

  • 没有找到相关文章

最新更新