特征可视化技术t-SNE
一、理论介绍
想要了解t-SNE的数学原理可以参考t-SNE完整笔记
关于t-SNE的使用过程中有以下几点需要注意:
-
t-SNE算法并不是每次都能产生相似结果。
-
t-SNE算法使得距离的概念适应于数据集中的区域密度变化。因此,它自然而然地扩大密集的集群,收缩稀疏的集群,使集群大小趋于平衡。
-
还有一些可以阅读How to Use t-SNE Effectively
二、使用介绍
python sklearn就可以直接使用T-SNE,调用sklearn.mainfold.TSNE即可。
>>> 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, learning_rate='auto',
... init='random', perplexity=3).fit_transform(X)
>>> X_embedded.shape
(4, 2)
这里面TSNE自身参数网页中都有介绍。这里fit_trainsform(x)输入的x是numpy变量。pytroch中如果想要令特征可视化,需要转为numpy;此外,x的维度是二维的,第一个维度为例子数量,第二个维度为特征数量。比如上述代码中x就是4个例子,每个例子的特征维度为3。Pytroch中图像的特征往往大小是BXCXWXH的,可以flatten一下变成[B, CXWXH]。