如何使用 scikit-learn 在Python 中保存和加载机器学习模型

2021-09-2423:17:31编程语言入门到精通Comments2,737 views字数 2357阅读模式

一、教程概述

本教程分为3部分,它们是:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

  • 1、用pickle保存你的模型
  • 2、使用 joblib 保存您的模型
  • 3、保存模型的提示

二、用pickle保存模型

Pickle 是 Python 中序列化对象的标准方法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

您可以使用 pickle 操作序列化您的机器学习算法并将序列化格式保存到文件中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

稍后您可以加载此文件以反序列化您的模型并使用它进行新的预测。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

下面的示例演示了如何在皮马印第安人的糖尿病数据集上训练逻辑回归模型,将模型保存到文件并加载它以对看不见的测试集进行预测(从这里下载)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

# Save Model Using Pickle
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import pickle
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Fit the model on training set
model = LogisticRegression()
model.fit(X_train, Y_train)
# save the model to disk
filename = 'finalized_model.pkl'
pickle.dump(model, open(filename, 'wb'))

# some time later...

# load the model from disk
loaded_model = pickle.load(open(filename, 'rb'))
result = loaded_model.score(X_test, Y_test)
print(result)

运行示例会将模型保存到本地工作目录中的 finalized_model.pkl文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

加载保存的模型并对其进行评估,以估计模型对未见数据的准确性。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

0.755905511811

三、用joblib保存模型

Joblib 是 SciPy 生态系统的一部分,提供用于流水线化 Python 作业的实用程序。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

它提供了用于保存和加载 Python 对象的实用程序,这些对象有效地使用了 NumPy 数据结构。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

这对于一些需要大量参数或存储整个数据集的机器学习算法(如 K-Nearest Neighbors)很有用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

下面的示例演示了如何在皮马印第安人糖尿病数据集上训练逻辑回归模型,使用 joblib 将模型保存到文件并加载它以对看不见的测试集进行预测。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

# Save Model Using joblib
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import joblib
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Fit the model on training set
model = LogisticRegression()
model.fit(X_train, Y_train)
# save the model to disk
filename = 'finalized_model.pkl'
joblib.dump(model, filename)

# some time later...

# load the model from disk
loaded_model = joblib.load(filename)
result = loaded_model.score(X_test, Y_test)
print(result)

运行该示例会将模型保存为 finalized_model.pkl 文件,并为模型中的每个 NumPy 数组创建一个文件(四个附加文件)。
加载模型后,将报告模型对未见数据的准确性的估计。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

0.755905511811

总结

在这篇文章中,您了解了如何使用 scikit-learn 在 Python 中持久化您的机器学习算法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

您学习了两种可以使用的技术:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html

  • 用于序列化标准 Python 对象的 pickle API。
  • 用于使用 NumPy 数组高效序列化 Python 对象的 joblib API。
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/22561.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/22561.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定