我正在尝试使用 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' object has no attribute '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/