我已经在一些数据集(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(第一个输入)将值(对应于指定为第二个输入的每个值的列索引)"分组"在一起,并对每个组执行操作,在这种情况下,这只是一个匿名函数,它将组中的所有值放入单元格数组中。