如何使用pickle保存sklearn模型

10

我想使用Pickle导出和导入我用Sklearn训练的模型。如何进行操作?


1
请查看scikit-learn的文档,了解有关模型持久性的信息。链接 - constt
3个回答

28

保存:

import pickle

with open("model.pkl", "wb") as f:
    pickle.dump(model, f)

加载:

with open("model.pkl", "rb") as f:
    model = pickle.load(f)

对于scikit-learn这个特定情况,使用joblib替换pickle(dump和load)可能更好,因为对于内部携带大型numpy数组的对象,这通常是适合已安装的scikit-learn估计器的情况:

保存:

import joblib

joblib.dump(model, "model.joblib")

加载:

model = joblib.load("model.joblib")

嗨,@Mykola,您认为在保存模型方面,pickle比joblib更好吗?我曾使用过joblib,但不幸的是,当我加载模型以进行预测时,总是得到相同的预测集群。似乎保存的模型没有被训练! - Emna Jaoua
已经完成:https://stats.stackexchange.com/questions/439968/k-means-gives-same-output-in-prediction - Emna Jaoua

8

使用pickle在所有机器学习模型中都是相同的,无论是聚类、回归等等。

用于保存模型的方法是dump,其中'wb'表示写入二进制。

pickle.dump(model, open(filename, 'wb')) #Saving the model

在任何需要加载已保存模型的地方,使用load,其中'rb'表示读取二进制文件。

model = pickle.load(open(filename, 'rb')) #To load saved model from local directory

这里的模型是kmeans,文件名可以是本地文件,所以根据需要使用。


5

一个人也可以使用joblib

from joblib import dump, load
dump(model, model_save_path) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接