我正在尝试使用 tsne 转换两个数据集:x_train 和 x_test。我假设执行此操作的方法是将 tsne 拟合到 x_train,然后转换 x_test 和 x_train。但是,我无法转换任何数据集。
tsne = TSNE(random_state = 420, n_components=2, verbose=1, perplexity=5, n_iter=350).fit(x_train)
我假设 tsne 已安装到 x_train。
但是,当我这样做时:
x_train_tse = tsne.transform(x_subset)
我得到:
AttributeError:“TSNE”对象没有属性“transform”
任何帮助将不胜感激。 (我知道我可以执行 fit_transform
,但是我在 x_test 上不会得到同样的错误吗?)
最佳答案
从sklearn的文档来看,TSNE根本就没有任何变换方法。
此外,TSNE 是一种用于降维/可视化的无监督方法,因此它实际上不能与 TRAIN 和 TEST 一起使用。您只需获取所有数据并使用 fit_transform 进行转换并绘制它。
编辑 - 实际上不可能学习转换并在不同的数据上重用它(即训练和测试),因为 T-sne 不会学习较低维空间上的映射函数,而是在子空间上运行迭代过程以找到一个平衡点,最大限度地减少某些数据的损失/距离。
因此,如果您想要预处理并降低训练数据集和测试数据集的维数,最好的方法是 PCA/SVD 或自动编码器。 T-Sne 只会帮助您完成无人监督的任务:)
关于python tsne.transform 不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59214232/