K-means + PCA + T-SNE 實現高維數據的聚類與可視化


使用matlab完成高維數據的聚類與可視化

[idx,Centers]=kmeans(qy,3)
[COEFF,SCORE,latent] = pca(qy);
SCORE = SCORE(:,1:30);
mappedX = tsne(SCORE,'Algorithm','exact','NumDimensions',3);
c=zeros(211,3);
for i = 1 : 211
    c(i,idx(i)) = 1;
end
scatter3(mappedX(:,1),mappedX(:,2),mappedX(:,3),15,c,'fill')

%     數據qy為211個,48維。
%     K-means:  [idx,Centers]=kmeans(data,k)
%     將數據分為k類,idx為每個數據的類別標號,centers為k個中心的坐標,

%     PCA:  [COEFF SCORE latent]=princomp(X)
%     現在已經改名為pca而非princomp
%     參數說明:
%     1)COEFF 是主成分分量,即樣本協方差矩陣的特征向量;
%     2)SCORE主成分,是樣本X在低維空間的表示形式,即樣本X在主成份分量COEFF上的投影 ,若需要降k維,則只需要取前k列主成分分量即可
%     3)latent:一個包含樣本協方差矩陣特征值的向量;


% T-SNE:    mappedX = tsne(X, labels, no_dims, init_dims, perplexity)
%    tsne 是無監督降維技術,labels 選項可選;
%    X∈RN×D,N 個樣本,每個樣本由 D 維數據構成;
%    no_dims 的默認值為 2;(壓縮后的維度) 
%    tsne 函數實現,X∈RN×D⇒RN×no_dimes(mappedX)
%    init_dims:注意,在運行 tsne 函數之前,需要使用 PCA 對數據預處理,將原始樣本集的維度降低至 init_dims 維度(默認為 30)。
%    perplexity:高斯分布的perplexity,默認為 30

 

 

最終效果:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM