python tsne.transform 不存在?

数据挖掘 Python 特纳
2022-03-15 15:59:47

我正在尝试使用 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 上得到同样的错误吗?)

2个回答

这是 sklearn 中 TSNE 的一个特殊特性: https ://github.com/scikit-learn/scikit-learn/issues/5361

TSNE算法不学习变换函数,它直接优化低维点的位置,因此.transform()不适用TSNE的思想。一种选择是通过 TSNE 嵌入一堆数据,然后使用某种类型的监督回归(例如线性回归)来近似转换,以便应用于未来的数据。