python - 如何在单次训练期间保存和快照机器学习模型?

标签 python python-3.x machine-learning scikit-learn

我必须在一个时间限制为 7 天的集群上运行我的模型,如果计算成本超过 7 天,该作业将在集群上结束。因此,训练将不会完成以获得用于预测的保存模型。

我正在从 scikit-learn 训练一些分类器模型(例如 SVC、KNeighborsClassifier 等),想知道是否有任何函数或库可以在特定持续时间之间对模型进行快照,然后继续从已停止的点开始训练(类似于深度学习中应用的内容)?

谢谢

最佳答案

一般来说,在 scikit-learn 中不可能在拟合过程中拍摄快照。图书馆仅提供有限的persistence features 。可以增量训练某些模型,但不能训练其他模型。对于可能的模型,您将必须编写不同数量的样板代码。

incremental learning下列出的型号为此目的有一个 warm_start 属性和/或一个 .partial_fit() 方法。您可以在批量数据的循环中调用 partial_fit。此外,您需要编写代码来存储和检索训练进度以及部分训练的模型(有关模型持久性的更多信息,请参阅 this question)。

一些模型(尤其是集成模型,如随机森林)原则上可以合并。因此,您不必逐步训练一个模型,而是在循环中训练多个独立的模型实例,然后将它们合并。然而,据我所知,scikit-learn API 不支持这种合并。因此,虽然可以做到这一点,但需要破解私有(private)属性并深入了解模型的数学和实现。

关于python - 如何在单次训练期间保存和快照机器学习模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471418/

相关文章:

python - 是否有支持 xmltype 列的 Python Oracle 包装器?

python - 仅当值更改时触发线程(python)

javascript - python 中的等效代码(时间)

python - 使用 Python 3 打印不带括号的不同错误消息

python可以编码为utf-8但不能解码

machine-learning - 构建用于目标检测的神经网络最重要的步骤是什么? (不分类)

python - 两组标记之间的相似度得分

machine-learning - 用于射击游戏 AI 研究的 API

python - Stocktwits API - 从脚本获取访问 token ,无需用户交互

python - 将列表嵌套到分层字典中