import gradio as gr import joblib import pandas as pd # Path to the trained model MODEL_PATH = "tuned_model.pkl" # Load the model try: model = joblib.load(MODEL_PATH) except FileNotFoundError: raise FileNotFoundError(f"Model file not found at {MODEL_PATH}.") # Define prediction function def predict_with_model(State: str, Sex: str, GeneralHealth: str, PhysicalHealthDays: str, MentalHealthDays: str, LastCheckupTime: str, PhysicalActivities: str, SleepHours: str, HadStroke: str, HadArthritis: str, HadDiabetes: str, SmokerStatus: str, ECigaretteUsage: str, RaceEthnicityCategory: str, AgeCategory: str, HeightInMeters: str, WeightInKilograms: str, BMI: str, AlcoholDrinkers: str, HighRiskLastYear: str): try: # Prepare input data as a DataFrame 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("# Health Risk Prediction App") gr.Markdown("### Input the feature values below to predict health risks.") inputs = [ gr.Dropdown(["Alabama", "Alaska", "Arizona", "Arkansas", "California"], label="State"), # Example states gr.Radio(["Male", "Female"], label="Sex"), gr.Radio(["Excellent", "Very Good", "Good", "Fair", "Poor"], label="GeneralHealth"), gr.Slider(0, 30, step=1, label="PhysicalHealthDays"), gr.Slider(0, 30, step=1, label="MentalHealthDays"), gr.Radio(["Within last year", "1-2 years ago", "3-5 years ago", "5+ years ago"], label="LastCheckupTime"), gr.Radio(["Yes", "No"], label="PhysicalActivities"), gr.Slider(0, 24, step=1, label="SleepHours"), gr.Radio(["Yes", "No"], label="HadStroke"), gr.Radio(["Yes", "No"], label="HadArthritis"), gr.Radio(["Yes", "No"], label="HadDiabetes"), gr.Radio(["Smoker", "Non-Smoker"], label="SmokerStatus"), gr.Radio(["Yes", "No"], label="ECigaretteUsage"), gr.Dropdown(["White", "Black", "Asian", "Hispanic", "Other"], label="RaceEthnicityCategory"), gr.Dropdown(["18-24", "25-34", "35-44", "45-54", "55-64", "65+"], label="AgeCategory"), gr.Slider(1.0, 2.5, step=0.01, label="HeightInMeters"), gr.Slider(30, 200, step=1, label="WeightInKilograms"), gr.Slider(10, 50, step=0.1, label="BMI"), gr.Radio(["Yes", "No"], label="AlcoholDrinkers"), gr.Radio(["Yes", "No"], label="HighRiskLastYear"), ] predict_button = gr.Button("Predict") output = gr.Textbox(label="Prediction Result") # Connect prediction logic predict_button.click( fn=predict_with_model, inputs=inputs, outputs=output, ) # Launch the app app.launch()