python实现排队论模型_使用python+sklearn实现模型持久化

本文介绍了如何使用Python和scikit-learn实现排队论模型的持久化。强调了在 unpickle 数据时的安全性和模型在不同版本间加载的可维护性问题。建议保存模型时包括训练数据快照、Python源代码、scikit-learn版本信息以及交叉验证分数。
摘要由CSDN通过智能技术生成
在训练了 scikit-learn 模型之后,希望有一种方法可以持久化该模型以备将来使用,而无需 重新训练。 本节提供了一个如何使用pickle持久化模型的示例。 我们还将回顾使用pickle序列化时的一些安全性和可维护性问题。 pickling 的另一种方法是使用 相关项目 下列出的相关模型导出工具可以将模型导出为其他格式。与 pickling 不同,一旦导出,就无法恢复完整的 Scikit-learn 估计器对象,但是可以部署模型以进行预测,通常使用支持开放模型交换格式(如 ONNX 或 PMML )的工具。

1. 持久化示例

可以使用Python的内置持久化模型 pickle ,将模型保存在 scikit-learn 中:
>>> from sklearn import svm>>> from sklearn import datasets>>> clf = svm.SVC()>>> X, y= datasets.load_iris(return_X_y=True)>>> clf.fit(X, y)SVC()>>> import pickle>>> s = pickle.dumps(clf)>>> clf2 = pickle.loads(s)>>> clf2.predict(X[0:1])array([0])>>> y[0]0
在 scikit-learn 的特定情况下,最好使用 joblib 来替换 pickle( dump & load ),这在内部携带大型 numpy 数组的对象上更为有效,与训练好的 scikit-learn 估计器的情况一样,但只能pickle到磁盘而不是字符串:
>>> from joblib import dump, load>>> dump(clf, 'filename.joblib')
稍后,您可以使用以下命令重新加载(load back)pickled模型(可能在另一个Python进程中):
>>> clf = load('filename.joblib')
注意: dumpload 函数也接受类似文件的对象,而不是文件名。关于更多使用 Joblib 数据持久化的信息可以在 这里 获取。

2. 安全性和可维护性限制

pickle(和 joblib 的扩展)在可维护性和安全性方面存在一些问题。因为,
  • 切勿 unpickle 不受信任数据,因为它可能导致加载时执行恶意代码。
  • 虽然使用 scikit-learn 的某个版本保存的模型可能可以在其他版本中加载,但这是完全不受支持和不可取的。还应记住,对此类数据执行的操作可能会产生不同和意外的结果。
为了使用 scikit-learn 的未来版本重建类似的模型,其他元数据(metadata)应沿pickled模型一起保存:
  • 训练数据,例如引用不可变快照(immutable snapshot)
  • 用于生成模型的python源代码
  • scikit-learn 的版本及其依赖关系
  • 从训练数据中获得的交叉验证分数
这应该可以检查交叉验证分数是否与之前的范围相同。 由于模型内部表示在两个不同的体系结构上可能不同,因此不支持将模型转储(dumping)到一个体系结构上并将其加载(loading)到另一个体系结构上。 如果您想了解更多关于这些问题的信息并探索其他可能的序列化方法,请参阅tAlex Gaynor的这篇演讲 https://pyvideo.org/video/2566/pickles-are-for-delis-not-software

文壹由“伴编辑器”提供技术支持

☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏 文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:

2061a8eb98de91b076e6c3b8ae762502.png

欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

3971034d5474e94ffd00a7da400a3ffc.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值