七、t-SNE
TSNE
类是scikit-learn
提供的t-SNE
模型,其原型为: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_components
:一个整数,指定低维空间的维度。perplexity
:一个浮点数,指定了困惑度。该参数影响的是:对每个点,考虑其周围多少个邻居点。- 其取值范围通常在
5~50
之间。 - 对于较大的数据集,该参数通常较大。
t-SNE
对于该参数不是特别敏感,因此该参数不是特别重要。
- 其取值范围通常在
early_exaggeration
:一个浮点数,指定了早期对 放大的倍数。- 如果该数值较大,则相当于将高维空间中的点执行压缩。
t-SNE
对于该参数不是特别敏感,因此该参数不是特别重要。
learning_rate
:一个浮点数,指定学习率。通常范围是在[10.0,1000.0]
。- 如果学习率过高,则降维之后的数据就像一个球体,每个点与它最近邻点的距离都几乎相等。
- 如果学习率过低,则降维之后的数据看起来像是一个密集的压缩云,以及云外少量的异常点。
- 如果代价函数陷入了局部极小值,则增加学习率会有帮助。
n_iter
:一个整数,指定最大的迭代次数。n_iter_without_progress
:一个整数,在结束优化之前的、不在进度之内的最大迭代次数。主要用于初始化时的early_exaggeration
。min_grad_norm
:一个浮点数,指定梯度的阈值。如果梯度小于该阈值,则优化过程停止。metric
:一个字符串或者可调用对象,指定距离的度量函数。- 如果是字符串,则它必须匹配
scipy.spatial.distance.pdist
的metric
参数。 - 如果是字符串
'precomputed'
,则X
必须是一个距离矩阵。 - 如果是可调用对象,则它传入一对样本点返回一个距离值。
- 如果是字符串,则它必须匹配
init
:一个字符串或者numpy array
,指定初始化策略。'random'
:使用随机初始化。'pca'
:使用PCA
初始化。它通常会更健壮。- 或者是一个形状为
(n_samples,n_componets)
的array
:直接初始化。
verbose
:一个整数,指定日志输出的级别。random_state
: 一个整数或者一个RandomState
实例,或者None
。指定随机数种子。method
:一个字符串,指定梯度计算策略。'barnes_ht'
:使用Barnes-Hut
近似算法,它计算梯度的近似值,计算复杂度为 。'exact'
:计算梯度的精确值,计算复杂度为 。
angle
:一个浮点数,用于method='barnes_ht'
,用于平衡速度和准确率。该参数在
0.2-0.8
之间变化时,t-SNE
的结果不会发生太大的变化。- 如果该参数小于
0.2
,则计算时间会迅速增长。 - 如果该参数大于
0.8
,则计算误差会迅速增长。
- 如果该参数小于
属性:
embedding_
:一个形状为(n_samples,n_components)
的数组,给出了数据集在低维空间的表示。kl_divergence_
:一个浮点数,给出了优化后的KL
散度。n_iter_
:一个整数,给出了执行的迭代次数。
方法:
fit(X[, y])
:训练模型。fit_transform(X[, y])
:训练模型,并返回训练数据集在低维空间中的表示。