2015-07-19 147 views
0

kmeans(X,k)idx输出参数包含唯一值1:k,但以任意顺序;例如对于已经连续索引的簇的数据(即kmeans用于识别间隙/边界),唯一值不反映数据中簇的顺序。如何将idx输出的每个值重新编号,以使唯一值以升序显示,即unique(idx,'stable') == unique(idx)在MATLAB中对kmeans中的簇数进行排序

回答

0

重新编号可以通过使用uniqueic output argument进行:

% Find k clusters 
idx = kmeans(X,k); 

% Renumber idx for unique values in ascending order 
[~,~,ic] = unique(idx,'stable'); 

ic包含指数从其默认输出参数,C,即idx == C(ic)导出unique的输入。通常C进行排序,但对于setOrder输入参数提供'stable'C包含出场顺序在idx独特的价值观,所以从idx每个唯一值将在离开ic排序的方式进行重新编号。

的想法使用单独ic是基于post通过上的tumblr笨Matlab的黑客到的输入向量v的唯一值映射到1:length(unique(v))