在 Python 中儲存和載入機器學習模型

Corwien發表於2021-09-26
在這篇文章中,您將瞭解如何使用 scikit-learn 在 Python 中儲存和載入您的機器學習模型。

一、教程概述

本教程分為3部分,它們是:

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

二、用pickle儲存模型

Pickle 是 Python 中序列化物件的標準方法。

您可以使用 pickle 操作序列化您的機器學習演算法並將序列化格式儲存到檔案中。

稍後您可以載入此檔案以反序列化您的模型並使用它進行新的預測。

下面的示例演示瞭如何在皮馬印第安人的糖尿病資料集上訓練邏輯迴歸模型,將模型儲存到檔案並載入它以對看不見的測試集進行預測(從這裡下載)。

# 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

載入儲存的模型並對其進行評估,以估計模型對未見資料的準確性。

0.755905511811

三、用joblib儲存模型

Joblib 是 SciPy 生態系統的一部分,提供用於流水線化 Python 作業的實用程式。

它提供了用於儲存和載入 Python 物件的實用程式,這些物件有效地使用了 NumPy 資料結構。

這對於一些需要大量引數或儲存整個資料集的機器學習演算法(如 K-Nearest Neighbors)很有用。

下面的示例演示瞭如何在皮馬印第安人糖尿病資料集上訓練邏輯迴歸模型,使用 joblib 將模型儲存到檔案並載入它以對看不見的測試集進行預測。

# 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 陣列建立一個檔案(四個附加檔案)。
載入模型後,將報告模型對未見資料的準確性的估計。

0.755905511811

總結

在這篇文章中,您瞭解瞭如何使用 scikit-learn 在 Python 中持久化您的機器學習演算法。

您學習了兩種可以使用的技術:

  • 用於序列化標準 Python 物件的 pickle API。
  • 用於使用 NumPy 陣列高效序列化 Python 物件的 joblib API。

相關文章:
在Python 中儲存和載入機器學習模型
使用 scikit-learn 在 Python 中儲存和載入機器學習模型
Python - How to Save and Load ML Models

相關文章