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

Using Clustering Index in another function

我在一些数据集 500x39 矩阵上使用 Matlab 中的内置函数完成了一些 k-means 聚类。选择 7 个集群。来自 :

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

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

然后我想在在线可用的 Multiblock 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 数组(第一个输入)与 "group" 值(与指定为第二个输入的每个值对应的列索引)一起使用并执行对每个组的操作,在这种情况下只是一个匿名函数,它获取组中的所有值并将它们放入元胞数组中。