sklearn.manifold.TSNE 实现 t-SNE降维和可视化
t-SNE 可以将高维数据进行降维,同时实现可视化,它将数据点之间的相似性转化为联合概率,并试图最小化低维嵌入和高维数据联合概率之间的Kullback-Leibler差异。t-SNE有一个非凸的代价函数,即通过不同的初始化,我们可以得到不同的结果。强烈建议使用另一种降维方法(如密集数据的PCA或稀疏数据的集群svd)来减少维数到一个合理的数量,如果特征的数量非常高。这将抑制一些噪声,加快样本间成对距离的计算。 t-SNE是目前来说效果最好的数据降维与可视化方法,当我们想要对高维数据进行分类,又不清楚这个数据集有没有很好的可分性(即同类之间间隔小,异类之间间隔大),可以通过t-SNE投影到2维或者3维的空间中观察一下。如果在低维空间中具有可分性,则数据是可分的;如果在高维空间中不具有可分性,可能是数据不可分,也可能仅仅是因为不能投影到低维空间。t-SNE(TSNE)的原理是将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似度由“学生t分布”表示。
from sklearn.manifold import TSNE tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)
在低维空间下,使用更加偏重长尾分布的方式将距离转换为概率分布,使得中高维度下中低等的举例在映射后能够有较大的距离。
推荐修改参数如下:
n_components: int, 可视化的维度, 2
init='pca'
perplexity: float,30.影响比较大,建议5-50之间,大型数据集需要使用较大的数值。 early_exaggeration: float, 12.0, 不是关键参数,若损失函数在初始优化的时候提高了,则需降低该值
n_iter=5000
learning_rate: float, 200.0, 通常取值10 - 1000. 如果损失函数困在较差的局部最小值,提高该值。
参考链接:https://blog.csdn.net/sinat_20177327/article/details/80298645?ops_request_misc=&request_id=&biz_id=102&utm_term=t-SNE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-80298645.nonecase&spm=1018.2226.3001.4187

浙公网安备 33010602011771号