我有两组数据,比如说A和B。
我想将PCA和T-sne应用于A,并对算法进行微调。
一次,我对我的调优感到满意,我想将学到的东西保存到某个pickle文件中。
现在,我要应用相同的学习到的PCA和t-sne来设置B。
我希望t-sne每次在B上产生相同的结果。我希望这样做是因为我假设,我们也可以保存学习的t-sne参数的状态。如果参数相同,并且每次加载相同文件时,在集合B上应用t-sne的结果每次都应该相同。
我该如何在Sklearn和python中做到这一点?
抱歉,我是ML和python的新手,这可能是一个非常基本的问题。

最佳答案

微调T-SNE等于为您的数据调整某些启发式算法(毕竟条件不佳;高维->低维映射是有损的)。

通过sklearn的transform将调整后的学习到的映射应用于其他数据。

但是:您将看到T-SNE没有transform方法,并且给出了here的原因(包括进一步的讨论):


  就像许多聚类算法一样,它是一种转导式学习器:除了作为训练提供的数据点之外,该模型还没有真正适用。


因此,无论您对数据集A进行何种调整,都不会真正适用于数据集B(包括参数)!

对于PCA,这是微不足道的。使用docs: model_persistence中所述的方法并使用PCA的transform方法(假设兼容的数据集;尺寸!)。

08-25 05:11