idx
的{{1}}输出参数包含唯一值kmeans(X,k)
但是按任意顺序排列;例如对于具有已经连续索引的聚类的数据(即1:k
用于识别间隙/边界),唯一值不反映数据中聚类的顺序。如何将kmeans
输出的每个值重新编号,以使唯一值按升序显示,即idx
?
答案 0 :(得分:0)
可以使用unique(idx,'stable') == unique(idx)
的{{3}}执行重新编号:
unique
% Find k clusters
idx = kmeans(X,k);
% Renumber idx for unique values in ascending order
[~,~,ic] = unique(idx,'stable');
包含从其默认输出参数ic
中导出unique
输入的索引,即C
。通常idx == C(ic)
已排序,但通过为C
输入参数提供'stable'
,setOrder
按照C
的顺序包含唯一值,因此每个唯一值来自idx
的值将以idx
排序的方式重新编号。
单独使用ic
的想法是基于Tumblr上的ic
output argument Stupid Matlab Hacks 来映射输入向量ic
的唯一值v
。