机器学习笔记:t-SNE_UQI-LIUWJ的博客-CSDN博客
将高维数据降维,使得高维数据各点的联合概率,和对应的低维数据各点的联合概率之间的 KL散度尽量小
对T-SNE使用不同的初始化,我们可以获得不同的结果
- class sklearn.manifold.TSNE(
- n_components=2,
- *,
- perplexity=30.0,
- early_exaggeration=12.0,
- learning_rate='warn',
- n_iter=1000,
- n_iter_without_progress=300,
- min_grad_norm=1e-07,
- metric='euclidean',
- metric_params=None,
- init='warn',
- verbose=0,
- random_state=None,
- method='barnes_hut',
- angle=0.5,
- n_jobs=None,
- square_distances='deprecated')
n_components | 需要降至的维度 |
perplexity |
|
early_exaggeration |
|
learning_rate | t-SNE的学习率
除了浮点数之外,这里也可以设置learning_rate为'auto',可以被计算为max(N / early_exaggeration / 4, 50) 【N是sample size】 |
n_iter | 优化需要的最大迭代次数(至少需要250) |
n_iter_without_progress | 如果多少轮没有更好地优化进展,那么就可以终止优化。(在250轮之后开始check) 每50轮check一次优化进展,所以一般是50的倍数 |
min_grad_norm | 如果梯度的范数小于这个阈值,那么停止优化 |
metric | 如何计算两个元素i和j之间的距离
|
metric_params | 如果metric是一个可调用的函数,那么这里是额外的参数 |
init |
|
- import numpy as np
- from sklearn.manifold import TSNE
- X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
-
- tsne=TSNE(n_components=2).fit(X)
-
-
-
- ################################# 两种方式找低维嵌入 ###################################
- X_embed=tsne.fit_transform(X)
- X_embed
- '''
- array([[-141.00409 , 379.51575 ],
- [ 32.38434 , 121.13147 ],
- [-225.9871 , -52.276257],
- [-399.37567 , 206.10808 ]], dtype=float32)
- '''
-
- tsne.embedding_
- '''
- array([[-141.00409 , 379.51575 ],
- [ 32.38434 , 121.13147 ],
- [-225.9871 , -52.276257],
- [-399.37567 , 206.10808 ]], dtype=float32)
- '''
- #########################################################################################
-
- tsne.kl_divergence_
- #0.048726845532655716
- #T-SNE的KL散度
-
-
- tsne.n_features_in_
- #3
- #输入的特征个数
-
- tsne.n_iter_
- #499 迭代次数