python - 如何在Sklearn中保存PCA和T-SNE的学习权重/参数

标签 python machine-learning scikit-learn

我有两组数据,假设 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 (包括进一步讨论):

It is a transductive learner, like many clustering algorithms: the model is not really applicable beyond the data points it is fed as training.

因此,无论您为数据集 A 调整什么,都并不真正适用于数据集 B(包括参数)!

对于 PCA 来说这是微不足道的。使用 docs: model_persistence 中描述的方法并使用 PCA 的 transform -方法(假设兼容的数据集;维度!)。

关于python - 如何在Sklearn中保存PCA和T-SNE的学习权重/参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541671/

相关文章:

python - 推荐系统 - 基于 Softmax 的深度神经网络模型中的用户嵌入

python - sklearn 作业数量增加导致训练缓慢

scikit-learn - Jupyter 笔记本导入错误 : No module named 'sklearn'

python - 如何将 Pandas 中的一列扩展为多列?

python - networkx中有没有一种方法可以通过聚类系数获取前10个节点?

Python:将输入中的奇数相加

python - Qubole 中的宽数据 PySpark 机器学习

machine-learning - 解压模型后如何使用 Keras 模型预测输出

python - 搜索并替换 HTML 文本,而不是标签

python - 在OpenCV中高效地转换和混合图像