加载泡菜文件时没有名为“”的模块错误

数据挖掘 朱庇特 蟒蛇 泡菜
2021-09-22 05:44:44

我创建了一个模型,并使用算法 SVR(支持向量回归)将其保存在一个泡菜文件中

import pickle
pickle.dump(model,open('carb patients data/Pickles/svr.pickle', 'wb'))

在 jupyter 笔记本中它给出了一个错误

不能腌制 _thread.RLock 对象

因此,我将该 jupyter 文件转换为 .py 文件并下载并使用 Python Idle 执行。然后它被保存在那个特定的位置。但是当我尝试从另一个 Jupyter Notebook 加载我的泡菜文件时,它会给出一个错误,称为,

没有名为“sklearn.svm._classes”的模块

我如何尝试加载泡菜文件的代码,

from flask import Flask, request, redirect, url_for, flash, jsonify
import numpy as np
import pickle as p
import json
from sklearn import ensemble
app = Flask(__name__)


@app.route('/api/', methods=['POST'])
def makecalc():
  data = request.get_json()
  prediction = np.array2string(model.predict(data))

  return jsonify(prediction)

if __name__ == '__main__':
   modelfile = 'Clustering Patients/carb patients data/Pickles/svr.pickle'
   model = p.load(open(modelfile, 'rb'))
   app.run(debug=True, host='0.0.0.0')

我做错了什么还是 Jupyter Notebook 中的问题?如何加载我保存的泡菜文件?

1个回答

根据scikit-learn 模型持久性文档,最好joblib改用:

保存模型

from joblib import dump

dump(model, 'filename.joblib')

加载模型

from joblib import load

model = load('filename.joblib')