加载使用joblib/pickle保存的ML模型时出现问题

2024-05-17 00:01:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用joblib.将jupyter笔记本.pynb文件保存为.pickle格式

我的ML模型是使用pandas、numpy和statsmodelspython库构建的

我将拟合的模型保存到一个名为fitted_model的变量中,下面是我如何使用joblib的:

from sklearn.externals import joblib
# Save RL_Model to file in the current working directory

joblib_file = "joblib_RL_Model.pkl"  
joblib.dump(fitted_model, joblib_file)

我将此作为输出:

['joblib_RL_Model.pkl']

但当我尝试从文件加载时,在新的jupyter笔记本中,使用:

# Load from file
joblib_file = "joblib_RL_Model.pkl"  
joblib_LR_model = joblib.load(joblib_file)
joblib_LR_model

我只拿回这个: <;statsmodels.tsa.holtwinters.holtwinters在0xa1a8a0ba8>

而且没有模型。我希望看到模型负载和原始笔记本的图形输出


Tags: 文件from模型model笔记本jupyterfilerl
2条回答

与open一起使用,更好的是,它可以自动打开和关闭文件。也有适当的模式

with open('joblib_RL_Model.pkl', 'wb') as f:
    pickle.dump(fitted_model, f)

                                    
with open('joblib_RL_Model.pkl', 'rb') as f:
    joblib_LR_model = pickle.load(f)

我在Colab中的实现是here。检查一下

您可以使用更可量化的包,它是python的pickle默认包来保存模型

您可以使用以下功能保存ML模型

import pickle

def save_model(model):
    pickle.dump(model, open("model.pkl", "wb"))

函数的模板是

import pickle

def save_model(model):
    pickle.dump(model, open(PATH_AND_FILE_NAME_TO_BE_SAVED, "wb"))

要在从pickle库保存模型时加载模型,可以执行以下函数

def load_model(path):
    return pickle.load(open(path, 'rb'))
  • 其中path是模型保存到的文件的路径和名称

注:

  • 这只适用于基本的ML模型和PyTorch模型,不适用于需要使用的基于Tensorflow的模型
model.save(PATH_TO_MODEL_AND_NAME)

其中模型类型为tensorflow.keras.models

相关问题 更多 >