我有两组数据让我们说A和B. 我想将PCA和T-sne应用到A并微调算法。 有一次,我对我的调整感到满意,我想将学到的东西保存到一些pickle文件中。 现在我想应用相同的学习PCA和t-sne来设置B. 我希望t-sne每次在B上产生相同的结果。我希望这是因为我假设,我们也可以保存学习t-sne参数的状态。如果参数相同,并且每次加载相同的文件时,在集合B上应用t-sne的结果应该每次都相同。 我怎么能在Sklearn和python中做到这一点? 对不起,我是ML和python的新手,这可能是一个非常基本的问题。
答案 0 :(得分:3)
微调T-SNE等于调整一些启发式算法(毕竟它的病态条件;高维度 - >低维度映射是有损的)。
应用此调谐&学习到其他数据的映射是由sklearn的transform
完成的。
但是:您会看到T-SNE没有transform
- 方法,原因是here(包括进一步讨论):
它是一种转换学习者,就像许多聚类算法一样:该模型除了作为训练提供的数据点之外并不真正适用。
因此无论你为数据集A调整了什么,都不适用于数据集B(包括参数)!
对于PCA来说,这是微不足道的。使用docs: model_persistence中描述的方法并使用PCA的transform - 方法(假设兼容的数据集;尺寸!)。
答案 1 :(得分:-2)
要保存模型,您应该使用以下库:
from joblib import dump, load
在PCA中按如下所示建立模型后:
pca_model = PCA(n_components=n)
您可以将joblib格式的模型保存在当前目录中:
dump(pca_model, 'pca_model.joblib')