在MATLAB中对kmeans中的簇编号进行排序

时间:2015-07-19 05:17:45

标签: matlab sorting k-means

idx的{​​{1}}输出参数包含唯一值kmeans(X,k)但是按任意顺序排列;例如对于具有已经连续索引的聚类的数据(即1:k用于识别间隙/边界),唯一值不反映数据中聚类的顺序。如何将kmeans输出的每个值重新编号,以使唯一值按升序显示,即idx

1 个答案:

答案 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