sklearn.manifold.TSNE?
class sklearn.manifold.TSNE(n_components=2, *, perplexity=30.0, early_exaggeration=12.0, learning_rate=200.0, n_iter=1000, n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', init='random', verbose=0, random_state=None, method='barnes_hut', angle=0.5, n_jobs=None)
[源碼]
t分布隨機鄰居嵌入。
t-SNE [1]是可視化高維數據的工具。它將數據點之間的相似性轉換為聯合概率,并試圖最小化低維嵌入和高維數據的聯合概率之間的Kullback-Leibler差異。t-SNE的成本函數不是凸的,即使用不同的初始化,我們可以獲得不同的結果。
如果特征數量非常多,強烈建議使用另一種降維方法(例如,對于密集數據使用PCA或對于稀疏數據使用TruncatedSVD)將尺寸數量減少到合理的數量(例如50個)。這將抑制一些噪聲并加快樣本之間成對距離的計算。有關更多技巧,請參閱Laurens van der Maaten的常見問題解答[2]。
在用戶指南中閱讀更多內容。
參數 | 說明 |
---|---|
n_components | int, optional (default: 2) 嵌入式空間的尺寸。 |
perplexity | float, optional (default: 30) 困惑與其他流形學習算法中使用的最近鄰居的數量有關。較大的數據集通常需要較大的困惑度。考慮選擇一個介于5到50之間的值。不同的值可能會導致明顯不同的結果。 |
early_exaggeration | float, optional (default: 12.0) 控制原始空間中自然簇在嵌入式空間中的緊密程度以及它們之間有多少空間。對于較大的值,自然簇之間的空間在嵌入式空間中會更大。同樣,此參數的選擇不是很關鍵。如果成本函數在初始優化過程中增加,則早期夸張因子或學習率可能會太高。 |
learning_rate | float, optional (default: 200.0) t-SNE的學習率通常在[10.0,1000.0]范圍內。如果學習率太高,則數據看起來可能像“球”,其任何一點都與其最近的鄰居等距。如果學習率太低,則大多數點可能看起來像是密集的云,幾乎沒有異常值。如果成本函數陷入不良的局部最小值中,則提高學習率可能會有所幫助。 |
n_iter | int, optional (default: 1000) 優化的最大迭代次數。至少應為250。 |
n_iter_without_progress | int, optional (default: 300) 在中止優化之前沒有進度的最大迭代次數,在250次具有早期夸張的初始迭代之后使用。請注意,僅每50次迭代檢查一次進度,因此此值將四舍五入到50的下一個倍數。 0.17版中的新功能:參數n_iter_without_progress用于控制停止條件。 |
min_grad_norm | float, optional (default: 1e-7) 如果梯度范數低于此閾值,則優化將停止。 |
metric | string or callable, optional 計算要素陣列中實例之間的距離時使用的度量。如果metric是字符串,則它必須是scipy.spatial.distance.pdist為其metric參數允許的選項之一,或者是pairwise.PAIRWISE_DISTANCE_FUNCTIONS中列出的度量標準。如果度量是“預先計算的”,則假定X為距離矩陣。或者,如果metric是可調用的函數,則在每對實例(行)上調用metric,并記錄結果值。可調用對象應將X的兩個數組作為輸入,并返回一個指示它們之間距離的值。默認值為“歐幾里得距離”,它被解釋為平方的歐幾里得距離。 |
init | string or numpy array, optional (default: “random”) 嵌入的初始化。可能的選項是“ random”,“ pca”和一個numpy數組(n_samples,n_components)。PCA初始化不能用于預先計算的距離,且通常比隨機初始化更全局穩定。 |
verbose | int, optional (default: 0) 詳細程度。 |
random_state | int, RandomState instance, default=None 確定隨機數生成器。在多個函數調用之間傳遞int以獲得可重復的結果。注意,不同的初始化可能導致成本函數的局部最小值。請參閱:term: Glossary <random_state> . |
method | string (default: ‘barnes_hut’) 默認情況下,梯度計算算法使用在O(NlogN)時間內運行的Barnes-Hut近似。method='exact'將在O(N^2)時間內運行速度較慢但精確的算法。當最近鄰誤差大于3%時,應采用精確算法。然而,精確的方法不能擴展到數百萬個例子。 版本0.17中的新功能:通過Barnes-Hut的近似優化方法。 |
angle | float (default: 0.5) 僅在method ='barnes_hut'時使用。這是Barnes-Hut T-SNE在速度和精度之間的權衡。“angle”是從點開始測量的遠距離節點的角度大小(在[3]中稱為theta)。如果該大小小于“angle”,則將其用作其中包含的所有點的匯總節點。此方法對此參數在0.2-0.8范圍內的變化不太敏感。小于0.2的角度會迅速增加計算時間,大于0.8的角度會迅速增加誤差。 |
n_jobs | int or None, optional (default=None) 為鄰居搜索運行的并行作業數。當 metric="precomputed" 或(metric="euclidean" 和method="exact" )時,此參數不起作用。None 除非在joblib.parallel_backend 環境中,否則表示1 。 undefined表示使用所有處理器。有關更多詳細信息,請參見詞匯表。0.22版中的新功能。 |
屬性 | 說明 |
---|---|
embedding_ | array-like, shape (n_samples, n_components) 存儲嵌入向量。 |
kl_divergence_ | float 優化后的Kullback-Leibler離散度。 |
n_iter_ | int 運行的迭代次數。 |
參考文獻
[1] van der Maaten, L.J.P.; Hinton, G.E. Visualizing High-Dimensional Data
Using t-SNE. Journal of Machine Learning Research 9:2579-2605, 2008.
[2] van der Maaten, L.J.P. t-Distributed Stochastic Neighbor Embedding
https://lvdmaaten.github.io/tsne/
[3] L.J.P. van der Maaten. Accelerating t-SNE using Tree-Based Algorithms.
Journal of Machine Learning Research 15(Oct):3221-3245, 2014. https://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf
實例
>>> 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)
方法 | 說明 |
---|---|
fit (X[, y]) |
將X放入嵌入式空間。 |
fit_transform (X[, y]) |
將X放到嵌入式空間中,然后返回轉換后的輸出。 |
get_params ([deep]) |
獲取此估計量的參數。 |
set_params (**params) |
設置此估算量器的參數。 |
__init__(n_components=2, *, perplexity=30.0, early_exaggeration=12.0, learning_rate=200.0, n_iter=1000, n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', init='random', verbose=0, random_state=None, method='barnes_hut', angle=0.5, n_jobs=None)
[源碼]
初始化self, 請參閱help(type(self))以獲得準確的說明。
fit(X, y=None)
[源碼]
將X放入嵌入式空間。
參數 | 說明 |
---|---|
X | array, shape (n_samples, n_features) or (n_samples, n_samples) 如果度量是“預先計算的”,則X必須是平方距離矩陣。否則,它每行包含一個樣本。如果方法是“精確”,則X可以是類型為“ csr”,“ csc”或“ coo”的稀疏矩陣。如果方法是“ barnes_hut”并且度量標準是“預先計算”,則X可能是預先計算的稀疏圖。 |
y | Ignored |
返回值 | 說明 |
---|---|
X_new | array, shape (n_samples, n_components) 在低維空間中嵌入訓練數據。 |
get_params(deep=True)
[源碼]
獲取此估計量的參數。
參數 | 說明 |
---|---|
deep | bool, default=True 如果為True,則將返回此估算量和作為估算量的所包含子對象的參數。 |
返回值 | 說明 |
---|---|
params | mapping of string to any 參數名稱映射到其值。 |
set_params(**params)
[源碼]
設置此估算量的參數。
該方法適用于簡單估計量以及嵌套對象(例如pipelines)。后者具有形式的參數。<component>__<parameter>
以便可以更新嵌套對象的每個組件。
參數 | 說明 |
---|---|
**params | dict 估算量參數。 |
返回值 | 說明 |
---|---|
self | object 估算量實例。 |