Ошибка в модели машинного обучения в веб-приложениях Flask - PullRequest
0 голосов
/ 21 апреля 2019

Я создал свою модель машинного обучения для прогнозирования сердечных заболеваний, и теперь я хочу развернуть ее в своем веб-приложении с использованием FLASK. Набор данных, полученный от Kaggle. Всякий раз, когда я запускаю приложение, у меня возникают проблемы с моим кодом, когда я его выполняю, он говорит:

C:\Users\Surface\Desktop\Flask_app>python app.py                                                                          File "app.py", line 42                                                                                                   
 x_data = request.form['x_data']                                                                                                                                 
                              ^                                                                             
IndentationError: unindent does not match any outer indentation level   

Может кто-нибудь направить меня Спасибо :)

from flask import Flask,render_template,url_for,request
import numpy as np
import pandas as pd
import pickle
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.externals import joblib

app = Flask(__name__)
@app.route('/')
def home():
    return render_template('home.html')

@app.route('/predict',method=['POST'])
def predict():
    df = pd.read_csv("heart.csv")
    df = df.drop(columns = ['cp', 'thal', 'slope'])

#features and labels
    y = df.target.values
    x_data = df.drop(['target'], axis = 1)

#EXTRACT Features
    x = (x_data - np.min(x_data)) / (np.max(x_data) - np.min(x_data)).values
    x_train, x_test, y_train, y_test = train_test_split(x,y,test_size = 0.2,random_state=0)

# Random Forest Classification
    from sklearn.ensemble import RandomForestClassifier
    rf = RandomForestClassifier(n_estimators = 1000, random_state = 1)
    rf.fit(x_train.T, y_train.T)
    print("Random Forest Algorithm Accuracy Score : {:.2f}%".format(rf.score(x_test.T,y_test.T)*100))


#persist model in a standard format
    from sklearn.externals import joblib
    joblib.dump(rf, 'HAP_model.pkl')
    HAP_model = open('HAP_model.pkl','rb')
    rf = joblib.load(HAP_model)

    if request.method=='POST':
        x_data = request.form['x_data']
    data = [df.drop(['target'], axis = 1)]
    vect = rf.transform(data).toarray()
    my_prediction = rf.predict(vect)
    return render_template('result.html',prediction = my_prediction)


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

1 Ответ

1 голос
/ 23 апреля 2019

Одна вещь, которая увеличит вашу задержку прогнозирования, - это переместить ваш обучающий код из импорта hearts.csv к сохранению модели в качестве выбора из маршрута прогнозирования.Таким образом, когда приходит новый запрос, вам не нужно каждый раз переучивать свою модель.Таким образом, это увеличит вашу задержку.

Другое решение, которое вы можете использовать, - это вызов библиотеки BentoML (www.github.com/bentoml/bentoml).Это библиотека для упаковки и развертывания моделей ML в производство.Он сгенерировал модельный архив со встроенным сервером REST API.Вам даже не нужно больше писать колбу.

Для вашего проекта.Я думаю, что это очень похоже на пример scikit-learn https://github.com/bentoml/BentoML/blob/master/examples/sklearn-sentiment-clf/sklearn-sentiment-clf.ipynb.

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