我将数据拆分以进行训练/测试。 当我使用PCA时,很简单。
from sklearn.decomposition import PCA
pca = PCA()
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)
从这里开始,我可以在下一步中使用X_train_pca和X_test_pca,依此类推。
但是当我使用t-SNE
from sklearn.manifold import TSNE
X_train_tsne = TSNE(n_components=2, random_state=0).fit_transform(X_train)
我似乎无法转换测试集,因此我可以将t-SNE数据用于下一步,例如支持向量机。
有帮助吗?
答案 0 :(得分:2)
根据文档TSNE,该工具可以可视化高维数据。在描述中我们可以发现以下内容:强烈建议使用另一种降维方法(例如,对于密集数据使用PCA或对于稀疏数据使用TruncatedSVD)以减少维数。
我的建议是使用 TSNE 进行可视化,并使用 PCA 或 TruncatedSVD 作为机器学习模型的一部分。
答案 1 :(得分:1)
我相信您要尝试做的事是不可能的。
t-SNE进行投影,以尝试在您适合的样本之间保持成对的距离。因此,如果不进行调整,就无法使用t-SNE模型来预测新数据的投影。
另一方面,我不会将t-SNE的输出作为分类器的输入。主要是因为t-SNE是高度非线性的并且有些随机,并且根据不同的运行和不同的困惑度值,您可以获得非常不同的输出。
请参阅this对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:,:]