Ошибка веб-приложения машинного обучения в Flask

#python #flask #heroku

#python #flask #heroku

Вопрос:

Я новичок в развертывании модели машинного обучения и пытаюсь развернуть простую модель машинного обучения для прогнозирования цен на автомобили в Flask и Heroku. Создали модель с использованием конвейера sklearn и transformer. Код отлично работает на ноутбуке Jupyter. Развертывание в Heroku через Github показывает, что сборка прошла успешно. Однако при запуске приложения отображается ошибка приложения. Кажется, что-то не так с app.py код файла для Flask. Любая помощь или понимание были бы действительно полезны. Спасибо

Код Jupyter Notebook:

 import numpy as np
import pandas as pd
import matplotlib as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import StandardScaler

data = pd.read_csv('car data.csv')
data['current_year'] = 2020
data['car_age'] = data['current_year'] - data['Year']

num_features = [col for col in data.columns if data[col].dtype != 'O' and col != 'Selling_Price']
cat_features = [col for col in data.columns if data[col].dtype == 'O']

X= data.drop(['Selling_Price'], axis=1)
y = data['Selling_Price']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)

num_transformer = Pipeline(steps = [('scaler', StandardScaler())])
cat_transformer = Pipeline(steps =[('OneHot', OneHotEncoder(handle_unknown='ignore'))])

preprocessor = ColumnTransformer(transformers = [('numerical_transformer', num_transformer, num_features),
                                                ('categorical_transformer', cat_transformer, cat_features)])

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor()

grid_param = {'n_estimators' :[100, 200, 500, 800, 1000]}

grid = GridSearchCV(estimator = rf, param_grid= grid_param)

model = Pipeline(steps= [('preprocessor',preprocessor), ('grid_regressor', grid)])
model.fit(X_train, y_train)

y_predict = model.predict(X_test)

from sklearn.metrics import mean_absolute_error, mean_squared_error

MAE = mean_absolute_error(y_test, y_predict)
MSE = mean_squared_error(y_test, y_predict)
RMSE = np.sqrt(MSE)

import pickle
file = open('regression_model.pkl', 'wb')
pickle.dump(model, file)
  

Код для app.py файл для Колбы:

 from flask import Flask, render_template, request
import jsonify
import pickle
import numpy as np
import sklearn

model = pickle.load(open('regression_model.pkl', 'rb'))   
app = Flask(__name__)
@app.route('/', methods=['GET'])
def Home():
    return render_template('index.html')

@app.route("/predict", methods= ['POST']   
def predict(): 
    if request.method == 'POST':
        Year = int(request.form['Year'])
        Selling_Price = float(request.form['Selling_Price'])
        Present_Price = float(request.form['Present_Price'])
        Kms_Driven = int(request.form['Kms_Driven'])
        Owner = int(request.form['Owner'])
        car_age = 2020 - Year
        
        Fuel_Type_Petrol = request.form['Fuel_Type_Petrol']
        if(Fuel_Type_Petrol=='Petrol'):
                Fuel_Type_Petrol=1
                Fuel_Type_Diesel=0
        elif (Fuel_Type_Petrol =='Diesel'):
            Fuel_Type_Petrol=0
            Fuel_Type_Diesel=1
        else:
            Fuel_Type_Petrol=0
            Fuel_Type_Diesel=0
            
        Seller_Type_Individual = request.form['Seller_Type_Individual']
        if(Seller_Type_Individual =='Individual'):
            Seller_Type_Individual=1
        else:
            Seller_Type_Individual=0
            
            
        Transmission_Mannual=request.form['Transmission_Mannual']
        if(Transmission_Mannual=='Mannual'):
            Transmission_Mannual=1
        else:
            Transmission_Mannual=0
            
        data = [Selling_Price, Present_Price, Kms_Driven, Owner, Fuel_Type_Petrol, Fuel_Type_Diesel, Seller_Type_Individual, Transmission_Mannual, car_age]
                    
        prediction = model.predict([data])          
        output = round(prediction[0], 2)
        
        if output <0:
            return render_template('index.html', prediction_texts="Sorry you cannot sell this car")
        else:
            return render_template('index.html', prediction_texts= "You can sell the car at {}".format(output))
        
    else:
        render_template('index.html')
    
if __name__ == '__main__':
    app.run(debug=True)
  

Комментарии:

1. Не могли бы вы предоставить код ошибки, который вы получаете?

2. код ошибки = H10 desc = «Сбой приложения» метод = ПОЛУЧИТЬ путь =»/»

3. Не это, покажите фактическую ошибку. Полученное вами переполнение стека

4. вы пробовали запускать в cli heroku restart ? помогает ли это?