Je suis nouveau sur python et apprentissage automatique. J'ai un modèle de régression linéaire qui est capable de prédire la sortie en fonction de l'entrée que j'ai vidée pour être utilisée avec un service Web. Voir le code ci-dessous :
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')
En utilisant flask j'essaie de l'exposer en tant que service Web comme ci-dessous:
@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)})
Mais il lève l'exception suivante
Object of type 'ndarray' is not JSON serializable
J'ai essayé le tableau NumPy n'est pas sérialisable JSON
mais toujours la même erreur. Comment puis-je résoudre ce problème
Essayez de convertir votre ndarray
avec la méthode tolist()
:
prediction = model.predict(np.array(X).tolist()).tolist()
return jsonify({'prediction': prediction})
Exemple avec le package json
:
a = np.array([1,2,3,4,5]).tolist()
json.dumps({"prediction": a})
Cela devrait produire:
'{"prediction": [1, 2, 3, 4, 5]}'