我使用Matlab中的内置函数在一些数据集500x39矩阵上完成了一些k-means聚类。选择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
的数据集中的列。
答案 0 :(得分:0)
您可以使用accumarray
来确定每个唯一索引的位置
result = accumarray(idx(:), (1:numel(idx)).', [], @(x){x})
基本上它的作用是它使用你的idx
arrray(第一个输入)来“组合”值(对应于指定为第二个输入的每个值的列索引)并对每个组执行操作在这种情况下,它只是一个匿名函数,它接受一个组中的所有值并将它们放入一个单元格数组中。