代码之家  ›  专栏  ›  技术社区  ›  user8188120

使用sklearn tsne映射测试数据

  •  1
  • user8188120  · 技术社区  · 6 年前

    有没有办法提取 sklearn.manifold.TSNE 在python中,这样您就可以将新数据映射到缩减的维度空间中?

    重要的是,我的意思是不必在这里重新训练新的数据。

    例如,假设您训练了一个tsne映射,如下所示:

    import numpy as np
    from sklearn.manifold import TSNE
    X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
    X_embedded = TSNE(n_components=2).fit_transform(X)
    

    如文件所示: https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html

    能否提取转换,以便将新数据映射到同一空间:

    Y = np.array([[0, 0.8, 0.8], [0.1, 0, 1], [1.2, 0.2, 1], [1, 1.1, 1]])
    

    对此事的任何帮助都将不胜感激!

    2 回复  |  直到 6 年前
        1
  •  0
  •   Has QUIT--Anony-Mousse    6 年前

    tSNE是一种非线性、非参数嵌入。

    因此,没有“封闭形式”的方法来更新新的点更糟糕的是:增加新的点数可能需要现有的点移动。

    因此,使tsne应用于新的数据将需要对方法进行实质性的更改,它将不再是原来的tsne。

        2
  •  0
  •   Venkatachalam    6 年前

    参数t-SNE可以选择应用于测试数据,但这在Sklearn中不可用。 Reference issue 是的。

    在设置了这个之后,我们提到它是在其他地方实现的 here