Python 如何在模型中实现t-SNE?
我将数据拆分为训练/测试。 当我使用PCA时,它是直接的Python 如何在模型中实现t-SNE?,python,machine-learning,scikit-learn,classification,Python,Machine Learning,Scikit Learn,Classification,我将数据拆分为训练/测试。 当我使用PCA时,它是直接的 from sklearn.decomposition import PCA pca = PCA() X_train_pca = pca.fit_transform(X_train) X_test_pca = pca.transform(X_test) 从这里,我可以在下一步中使用X_训练pca和X_测试pca,以此类推 但是当我使用t-SNE时 from sklearn.manifold import TSNE X_train_tsne
from sklearn.decomposition import PCA
pca = PCA()
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)
从这里,我可以在下一步中使用X_训练pca和X_测试pca,以此类推
但是当我使用t-SNE时
from sklearn.manifold import TSNE
X_train_tsne = TSNE(n_components=2, random_state=0).fit_transform(X_train)
我似乎无法转换测试集,以便在下一步使用t-SNE数据,例如SVM
有什么帮助吗?我相信你想做的是不可能的 t-SNE做了一个投影,试图在适合的样本之间保持成对距离。因此,如果不进行重新调整,就无法使用t-SNE模型预测新数据的投影 另一方面,我不会将t-SNE的输出作为分类器的输入。主要是因为t-SNE是高度非线性的,有点随机,根据不同的运行和不同的困惑值,可以得到非常不同的输出 见t-SNE的解释 然而,如果你真的想为此目的使用t-SNE,你必须在整个数据上拟合你的t-SNE模型,一旦拟合好,你就可以进行训练和测试分离
from sklearn.manifold import TSNE
size_train = X_train.shape[0]
X = np.vstack((X_train,X_test))
X_tsne = TSNE(n_components=2, random_state=0).fit_transform( X )
X_train_tsne = X_tsne[0:size_train,:]
X_test_tsne = X_tsne[size_train:,:]
根据文档,这是一种可视化高维数据的工具。在描述中我们可以发现:强烈建议使用另一种降维方法(例如,PCA用于密集数据或截断SVD用于稀疏数据)来减少维数
我的建议是将TSNE用于可视化和PCA,或将截断SVD作为机器学习模型的一部分。非常感谢您的评论。我认为建议是在列车/测试分离后使用降维,这就是为什么我不知道如何做的原因!理论上,我认为以这种方式使用t-SNE是可能的。无论如何,再次谢谢你,我会努力的!非常感谢。我已经使用了PCA,但认为t-SNE可能会给我一个不同的答案,因为它使用的是概率分布。t-SNE是非参数的,没有从训练集中学习的参数,因此没有变换方法。