0
kmeans(X,k)
的idx
輸出參數包含唯一值1:k
,但以任意順序;例如對於已經連續索引的簇的數據(即kmeans
用於識別間隙/邊界),唯一值不反映數據中簇的順序。如何將idx
輸出的每個值重新編號,以使唯一值以升序顯示,即unique(idx,'stable') == unique(idx)
?在MATLAB中對kmeans中的簇數進行排序
kmeans(X,k)
的idx
輸出參數包含唯一值1:k
,但以任意順序;例如對於已經連續索引的簇的數據(即kmeans
用於識別間隙/邊界),唯一值不反映數據中簇的順序。如何將idx
輸出的每個值重新編號,以使唯一值以升序顯示,即unique(idx,'stable') == unique(idx)
?在MATLAB中對kmeans中的簇數進行排序
重新編號可以通過使用unique
的ic
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))
。