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

Problem loading ML model saved using joblib/pickle

我使用 joblib.

将 jupyter notebook .pynb 文件保存为 .pickle 格式

我的 ML 模型是使用 pandas、numpy 和 statsmodels python 库构建的。

我将拟合模型保存到一个名为 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 notebook 中,使用:

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

我只得到这个:

没有模特。我期待在那里看到模型加载并看到按照原始笔记本的图形输出。

与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。检查一下。

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

您可以使用以下功能来保存 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'))
  • 其中路径是保存模型的文件的路径和名称。

注:

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

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