机器学习模型持久化----pickle与joblib

             场景:将训练好的模型保存至本地磁盘或者内存

pickle

pickle 模块及其同类模块 cPickle 向 Python 提供了 pickle 支持。后者是用 C 编码的,它具有更好的性能,对于大多数应用程序,推荐使用该模块。

joblib

joblib是scikit-learn的外带库,对于大数据而言,joblib比pickle更加高效,但是joblib只能将对象存储在磁盘文件中,不能保存为字符串。

 

  • 通过joblib实现模型持久化
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Seven'

from sklearn.tree import DecisionTreeClassifier
from sklearn.externals import joblib

# 构建简单数据集
# x = [[2, 3, 4], [4, 6, 5]]
# y = [1, 0]
# 构建决策树模型
clf = DecisionTreeClassifier()
# 模型训练
# res = clf.fit(x, y)

# 可以通过print查看训练后模型的参数
print(res)


# 保存至本地磁盘
# joblib.dump(clf, 'model.pkl')
# 从本地磁盘加载模型
model_joblib = joblib.load('model.pkl')
# 加载出来的模型可以进行predict等功能
print(model_joblib.predict([[4, 6, 10]]))

运行效果如下:

  • 通过pickle实现模型持久化
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Seven'

from sklearn.tree import DecisionTreeClassifier
import pickle

# 构建简单数据集
x = [[2, 3, 4], [4, 6, 5]]
y = [1, 0]
# 构建决策树模型
clf = DecisionTreeClassifier()
# 模型训练
res = clf.fit(x, y)

# 可以通过print查看训练后模型的参数
print(res)


# 保存至本地磁盘
# with open('model.pkl', 'wb') as file:
#     pickle.dump(clf, file)
# 从本地磁盘加载模型
with open('model.pkl', 'rb') as file:
    model_joblib = pickle.load(file)
    # 加载出来的模型可以进行predict等功能
    print(model_joblib.predict([[4, 6, 10]]))

# pickle还可以保存至内存
s = pickle.dumps(clf)
model = pickle.loads(s)
print(model.predict([[4, 6, 10]]))

运行效果如下:

猜你喜欢

转载自blog.csdn.net/gf19960103/article/details/90041125
今日推荐