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([[000], [011], [101], [111]])
>>> X_embedded = TSNE(n_components=2).fit_transform(X)
>>> X_embedded.shape
(42)
方法 说明
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
估算量实例。