Demo3 - 保存训练后模型

简介: 训练好的模型,需要保存好,下次就直接拿来用,相当于是机器学习的成果。不用每次都去学习了, 直接保存成文件,然后下个项目直接导入,就可以使用了。目前两种方法比较好用。

训练好的模型,需要保存好,下次就直接拿来用,相当于是机器学习的成果。不用每次都去学习了, 直接保存成文件,然后下个项目直接导入,就可以使用了。

目前两种方法比较好用。

  1. python自带pickle
  2. sklearn joblib工具

还是直接上代码,两种方式都已经在注释里面。

# -- coding: utf-8 --
# 通过本个demo 将学习后的模型进行保存。 这样就不用每次都重新训练模型。
# (模型的保留的迁移)

# 方法1,使用python自带的pickle
from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
from sklearn.externals import joblib
import pickle # ->python 自带

#  使用sklearn提供的一些demo数据,load_xxxx数据


(X,y) = datasets.load_iris(return_X_y=True)

# 模型构建
rfc = RandomForestClassifier(n_estimators=100,max_depth=100)
rfc.fit(X,y)

# 验证模式
print("模型初步验证:")
print(rfc.predict(X[0:1,:]))

# -- 重点! save Model
# file = open('saved_model/rfc.pickle','w')
# pickle.dump(rfc,file)
# file.close()

joblib.dump(rfc,'saved_model/rfc.pkl')  # - 官方建议方式joblib

print("模型已经保存到 saved_model")

一些附加知识

Pickle是python中一种标准的序列化对象的方法。你可以使用pickle操作来序列化你的机器学习算法,保存这种序列化的格式到一个文件中。稍后你可以导入这个文件反序列化你的模型,用它进行新的预测。以下的例子向你展示:如何使用Pima Indians onset of diabetes数据集,训练一个logistic回归模型,保存模型到文件,导入模型对未知数据进行预测。运行以下代码把模型存入你工作路径中的finalized_model.sav,导入模型,用未知数据评估模型的准确率

Joblib是SciPy生态的一部分,为管道化python的工作提供的工具。它提供了存储和导入python对象的工具,可以对Numpy数据结构进行有效的利用。这对于要求很多参数和存储整个数据集的算法(比如K-Nearest Neighbors)很有帮助。以下代码向你展示:如何使用Pima Indians onset of diabetes数据集,训练一个logistic回归模型,使用joblib保存模型到文件,导入模型对未知数据进行预测。运行以下代码把模型存入你工作路径中的finalized_model.sav,也会创建一个文件保存Numpy数组,导入模型,用未知数据评估模型的准确率。

保存模型的几点提醒

当你存储你的机器学习模型时,需要考虑以下重要问题。一定要记住,记录下你的工具版本,以便于重构环境。

  1. python的版本:记录下python的版本。需要相同大版本号的python来序列化和反序列化模型。
  2. 库的版本:主要的库的版本要保持一致,不仅限于Numpy和scikit-learn的版本。
  3. 手动序列化:你可能想要手动的输出你的模型参数以便于你可以直接把他们用在scikit-learn或者其他的平台。确实学习算法参数实现比算法本身实现要难得多。如果你有能力也可以自己写代码来导出参数。
目录
相关文章
|
2月前
|
机器学习/深度学习 存储 并行计算
ModelScope问题之训练报错设置参数如何解决
ModelScope训练是指在ModelScope平台上对机器学习模型进行训练的活动;本合集将介绍ModelScope训练流程、模型优化技巧和训练过程中的常见问题解决方法。
48 0
|
1天前
|
算法
创建一个训练函数
【7月更文挑战第22天】创建一个训练函数。
11 4
|
2月前
|
Python
创建模型
创建模型。
12 1
|
2月前
|
PyTorch 算法框架/工具 异构计算
pytorch 模型保存与加载
pytorch 模型保存与加载
27 0
|
2月前
|
Linux 开发工具
【项目--Hi3559A】如何在Hi3559A上运行自己的yolov3模型(修改类别、网络结构)
【项目--Hi3559A】如何在Hi3559A上运行自己的yolov3模型(修改类别、网络结构)
28 0
|
2月前
|
机器学习/深度学习 计算机视觉 Python
批量demo推理图片脚本
批量demo推理图片脚本
34 0
|
2月前
yolov5--datasets.py --v5.0版本-数据集加载 最新代码详细解释2021-7-5更新
yolov5--datasets.py --v5.0版本-数据集加载 最新代码详细解释2021-7-5更新
178 0
|
9月前
|
图形学
模型粗糙度怎么修改?
模型粗糙度属性可以用于各种需要模拟不同材质表面光滑度和纹理的场景。
73 0
|
12月前
yolo自动标注时缺失的txt文件批量创建之脚本
使用yolov5做推理时并保存yolo格式的txt文件的时候,当图片上没有检测到目标时,yolov5将不会保存空的txt文件,导致txt文件缺失,yolo训练时报错。所以写了个简单的小脚本,在不影响原来已存在txt文件的前提下,来批量创建缺失的空txt文件并确保txt文件的总数量与图片的总数量一致。温馨提示:运行此脚本时,一定要注意图片和txt文件的文件名中,除了文件名后缀前有一个。
107 0
|
机器学习/深度学习 数据可视化 Java
TensorFlow 高级技巧:自定义模型保存、加载和分布式训练
本篇文章将涵盖 TensorFlow 的高级应用,包括如何自定义模型的保存和加载过程,以及如何进行分布式训练。