heartfailure / app.py
hackerbyhobby
app
c8c581e unverified
raw
history blame
2.67 kB
import gradio as gr
import joblib
import numpy as np
import pandas as pd
# Load the trained model
model_path = "trained_model.pkl"
def load_model(path):
try:
return joblib.load(path)
except Exception as e:
raise ValueError(f"Error loading model: {e}")
# Define the prediction function
def predict_with_model(State: float, Sex: float, GeneralHealth: float, PhysicalHealthDays: float, MentalHealthDays: float, LastCheckupTime: float, PhysicalActivities: float, SleepHours: float, HadStroke: float, HadArthritis: float, HadDiabetes: float, SmokerStatus: float, ECigaretteUsage: float, RaceEthnicityCategory: float, AgeCategory: float, HeightInMeters: float, WeightInKilograms: float, BMI: float, AlcoholDrinkers: float, HighRiskLastYear: float):
try:
model = load_model(model_path)
# Combine inputs into a DataFrame for prediction
input_data = pd.DataFrame([[State, Sex, GeneralHealth, PhysicalHealthDays, MentalHealthDays, LastCheckupTime, PhysicalActivities, SleepHours, HadStroke, HadArthritis, HadDiabetes, SmokerStatus, ECigaretteUsage, RaceEthnicityCategory, AgeCategory, HeightInMeters, WeightInKilograms, BMI, AlcoholDrinkers, HighRiskLastYear]], columns=['State', 'Sex', 'GeneralHealth', 'PhysicalHealthDays', 'MentalHealthDays', 'LastCheckupTime', 'PhysicalActivities', 'SleepHours', 'HadStroke', 'HadArthritis', 'HadDiabetes', 'SmokerStatus', 'ECigaretteUsage', 'RaceEthnicityCategory', 'AgeCategory', 'HeightInMeters', 'WeightInKilograms', 'BMI', 'AlcoholDrinkers', 'HighRiskLastYear'])
prediction = model.predict(input_data)
return "Heart Disease Risk" if prediction[0] == 1 else "No Risk"
except Exception as e:
return f"Error during prediction: {e}"
# Define the Gradio interface
with gr.Blocks() as app:
gr.Markdown("# Heart Disease Prediction App")
gr.Markdown("### Provide input values for the features below and get a prediction.")
input_sliders = []
for feature in ['State', 'Sex', 'GeneralHealth', 'PhysicalHealthDays', 'MentalHealthDays', 'LastCheckupTime', 'PhysicalActivities', 'SleepHours', 'HadStroke', 'HadArthritis', 'HadDiabetes', 'SmokerStatus', 'ECigaretteUsage', 'RaceEthnicityCategory', 'AgeCategory', 'HeightInMeters', 'WeightInKilograms', 'BMI', 'AlcoholDrinkers', 'HighRiskLastYear']:
input_sliders.append(gr.Slider(0, 100, step=1, label=feature))
predict_button = gr.Button("Predict")
output = gr.Textbox(label="Prediction Result")
# Connect prediction logic
predict_button.click(
fn=predict_with_model,
inputs=input_sliders,
outputs=output,
)
# Launch the app
app.launch()