t-SNE數據可視化


什么是t-SNE ?

t-SNE 的全稱為 t-distributed Stochastic Neighbor Embedding ,t-分布隨機近鄰嵌入。

t-SNE 可用於高維度數據的可視化。它將數據點之間的相似性轉換為聯合概率,並嘗試最小化低維嵌入和高維數據的聯合概率之間的KL散度(Kullback-Leibler divergence)。t-SNE的成本函數不是凸的,即使用不同的初始化我們可以得到不同的結果。

當待降維的數據維度過高時,建議使用其他的降維方法將數據降至合適的維度。例如使用主成分分析(PCA)處理密集數據,使用截斷奇異值分解(TruncatedSVD)處理稀疏數據。這樣將會在降維過程中抑制噪聲的影響,並且加快樣本之間成對距離的計算。

使用方法

>>> import numpy as np
>>> from sklearn.manifold import TSNE
>>> X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
>>> X_embedded = TSNE(n_components=2).fit_transform(X)
>>> X_embedded.shape
(4, 2)

簡單來說,整個過程如下:

  • 准備數據。整理你的數據 X,使其成為一個 m×n 的 np.array,其中 m 為樣本個數,n 為樣本的維度。無論你的數據是語音、文本、圖像,都需要將其轉換成展開的形式,成為一行向量。
  • 實例化TSNE。使用sklearn實例化一個TSNE,設置好降維后的維度 t ,(通過設置 n_components=t 來實現)。其他的參數可以查看文檔,進一步了解。
  • 降維。使用實例化的TSNE進行降維操作,一般調用的是 fit_transform 方法,轉換完成后,輸出一個降維的 np.array ,此時他的形狀為 m×t 。
  • 可視化。降維后的數據,你可以使用 matplotlib 進行可視化,顯示到二維坐標上,或者三維空間坐標上。

參考資料


免責聲明!

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



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