Передача параметров модели в Flask с использованием Python - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть обученная модель, которую я экспортировал как файл рассола. Я пытаюсь использовать файл pickle в моем файле python, который работает на фляге. Однако я не могу передать параметры, поскольку файл выдает ошибку. Когда я использую тот же код в своем блокноте jupyter, параметры передаются и дается прогноз. Однако, когда дело доходит до запуска его на колбу, выдает следующую ошибку:

Traceback (most recent call last):


File "C:\model1\venv\lib\site-packages\flask\app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\model1\venv\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\model1\venv\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\model1\venv\lib\site-packages\flask\_compat.py", line 35, in reraise
    raise value
  File "C:\model1\venv\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\model1\venv\lib\site-packages\flask\app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\model1\hello.py", line 26, in predict
    model = pickle.load(open("prediction.pkl","rb"))
  File "sklearn\neighbors\binary_tree.pxi", line 1152, in sklearn.neighbors.kd_tree.BinaryTree.__setstate__
  File "sklearn\neighbors\binary_tree.pxi", line 235, in sklearn.neighbors.kd_tree.get_memview_ITYPE_1D
ValueError: Buffer dtype mismatch, expected 'ITYPE_t' but got 'long long'

Мой hello.py файл выглядит следующим образом:

import pickle
import numpy as numpy
from decimal import Decimal
from flask import Flask, request, json

from sklearn.externals import joblib

app = Flask(__name__)

@app.route('/predict', methods=['POST'])
def predict():
    print(request.form)
    features = request.form["features"]

    features = json.loads(features)

    features = numpy.array(features)

    features = features.reshape(1, -1)
    model = pickle.load(open("prediction.pkl","rb"))

    prediction = model.predict(features).tolist()
    print(features)
    print(prediction)
    return json.dumps({"Prediction":prediction})

if __name__ == '__main__':
    app.run(host='127.0.0.1')

Может кто-нибудь подсказать, как решить ошибку?

1 Ответ

0 голосов
/ 01 ноября 2018

Привет, я думаю, что ваша модель была обучена другой версии библиотеки sklearn, а загружаемая библиотека sklearn - другой версии. или выпуск версии Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...