Spaces:
Sleeping
Sleeping
from flask import Flask, request, app, jsonify, render_template | |
import numpy as np | |
import pandas as pd | |
from joblib import dump, load | |
from src.utils import LoadClassifierThreshold | |
import os | |
app = Flask(__name__) | |
model_path = os.path.join('artifacts', 'best_model.pkl') | |
threshold_path = os.path.join('artifacts', 'threshold.txt') | |
preprocessor_path = os.path.join('artifacts', 'preprocessor.pkl') | |
# Load the model and preprocessor | |
model = LoadClassifierThreshold(model_path= model_path, | |
threshold_path=threshold_path) | |
preprocessor = load(preprocessor_path) | |
# Create first route | |
def home(): | |
return render_template('home.html') | |
def predict_api(): | |
data = request.json['data'] | |
# Create a DataFrame from the JSON data | |
data_df = pd.DataFrame(data, index=[0]) | |
print(data_df) | |
new_data = preprocessor.transform(data_df) | |
output = model.predict_with_threshold(new_data) | |
# Convert the output to an integer | |
prediction = int(output[0]) | |
return jsonify(prediction) | |
def predict(): | |
# Get data from the HTML form and create a DataFrame | |
data = { | |
'gender': [request.form['gender']], | |
'age': [int(request.form['age'])], | |
'hypertension': [int(request.form['hypertension'])], | |
'heart_disease': [int(request.form['heart_disease'])], | |
'ever_married': [request.form['ever_married']], | |
'work_type': [request.form['work_type']], | |
'Residence_type': [request.form['Residence_type']], | |
'avg_glucose_level': [float(request.form['avg_glucose_level'])], | |
'bmi': [float(request.form['bmi'])], | |
'smoking_status': [request.form['smoking_status']] | |
} | |
data_df = pd.DataFrame(data) | |
print(data_df) | |
# Transform the data using the preprocessor | |
final_input = preprocessor.transform(data_df) | |
# Make predictions using the model | |
output = model.predict_with_threshold(final_input) | |
prediction = int(output[0]) | |
# # Define the prediction message | |
# if prediction == 1: | |
# prediction_message = "There is an indication of stroke." | |
# else: | |
# prediction_message = "There is no indication of stroke." | |
return render_template("home.html", prediction_text=prediction) | |
if __name__ == "__main__": | |
app.run(host="0.0.0.0",port=5000) |