“ndarray”类型的对象不可 JSON 序列化

2023-12-22

我是 python 和机器学习的新手。我有一个线性回归模型,它能够根据我转储用于 Web 服务的输入来预测输出。请参阅下面的代码:

      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)

        regression_model = LinearRegression()
        regression_model.fit(X_train, y_train)
    print(regression_model.predict(np.array([[21, 0, 0, 0, 1, 0, 0, 1, 1, 1]]))) # this is returning my expected output

joblib.dump(regression_model, '../trainedModels/MyTrainedModel.pkl')

使用 Flask 我尝试将其公开为 Web 服务,如下所示:

 @app.route('/predict', methods=['POST'])
def predict():


    X = [[21, 0, 0, 0, 1, 0, 0, 1, 1, 1]]
    model = joblib.load('../trainedModels/MyTrainedModel.pkl')
    prediction = model.predict(np.array(X).tolist())
    return jsonify({'prediction': list(prediction)})

但它抛出以下异常

Object of type 'ndarray' is not JSON serializable

I tried NumPy 数组不可 JSON 序列化 https://stackoverflow.com/questions/26646362/numpy-array-is-not-json-serializable

但仍然是同样的错误。我该如何解决这个问题


尝试转换你的ndarray with tolist() method:

prediction = model.predict(np.array(X).tolist()).tolist()
return jsonify({'prediction': prediction})

示例为json包裹:

a = np.array([1,2,3,4,5]).tolist()
json.dumps({"prediction": a})

那应该输出:

'{"prediction": [1, 2, 3, 4, 5]}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“ndarray”类型的对象不可 JSON 序列化 的相关文章

随机推荐