'ValueError:Numpy中的非字符串名称,在flask中显示'unpickling'(python2.7)

时间:2018-01-19 14:12:59

标签: python python-2.7 numpy flask pickle

我尝试在Flask(python 2.7)中使用pickle但是当我运行Flask脚本时出现错误ValueError: non-string names in Numpy dtype unpickling。我已经使用RandomForestClassifier对象来预测请求。我已经在下面添加了我的代码。无法在两天内解决这个错误。感谢任何帮助。

import numpy as np
from flask import Flask, jsonify, abort, request
import pickle
from sklearn.externals import joblib



my_random_forest = pickle.load(open("iris_rfc.pkl", "rb"))
app = Flask(__name__)


@app.route('/api', methods=['POST'])
def make_predict():
    data = request.get_json(force=True)
    predict_request = [[data['sl'], data['sw'], data['pl'], data['pw']]
    predict_request = np.array(predict_request)
    y_hat = my_random_forest.predict(predict_request)
    output = [y_hat[0]]`enter code here`
    return jsonify(results=output)      

if __name__ == '__main__':
    app.run(debug=True) 

2 个答案:

答案 0 :(得分:0)

我有同样的问题。原因似乎是库版本不匹配。当然,随机森林分类器模型是使用另一个sklearn版本和较新的numpy版本生成的。更新您的库(numpy等)应该可以解决问题。

用户drishit96 enter image description here

报告了相同的行为

答案 1 :(得分:-3)

我认为open("iris_rfc.pkl", "rb")不是必需的。

尝试:

my_random_forest = pickle.load(path_to_iris_rfc.pkl)