2015-07-19 148 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))