APM10 / app.py
AIMLdeepanshu's picture
Update app.py
a2033ab verified
import gradio as gr
import pandas as pd
import joblib
# Load model
model = joblib.load("random_forest_model.pkl")
# Define the 18 features
input_features = [
"Age", "Gender", "BMI", "Physical Activity Level", "Smoking Status", "Alcohol Consumption",
"Diabetes", "Hypertension", "Cholesterol Level", "Family History of Alzheimer’s",
"Cognitive Test Score", "Depression Level", "Sleep Quality", "Dietary Habits",
"Genetic Risk Factor (APOE-ε4 allele)", "Social Engagement Level", "Income Level", "Stress Levels"
]
def print_debug_info(input_dict):
print("\n🛠️ Input received:")
for k, v in input_dict.items():
print(f"{k}: {v}")
def predict_alzheimers(
Age, Gender, BMI, Physical, Smoking, Alcohol, Diabetes, Hypertension, Cholesterol,
FamilyHistory, CognitiveScore, Depression, Sleep, Diet, GeneticRisk, Engagement,
Income, Stress
):
input_dict = {
"Age": Age,
"Gender": Gender,
"BMI": BMI,
"Physical Activity Level": Physical,
"Smoking Status": Smoking,
"Alcohol Consumption": Alcohol,
"Diabetes": Diabetes,
"Hypertension": Hypertension,
"Cholesterol Level": Cholesterol,
"Family History of Alzheimer’s": FamilyHistory,
"Cognitive Test Score": CognitiveScore,
"Depression Level": Depression,
"Sleep Quality": Sleep,
"Dietary Habits": Diet,
"Genetic Risk Factor (APOE-ε4 allele)": GeneticRisk,
"Social Engagement Level": Engagement,
"Income Level": Income,
"Stress Levels": Stress
}
print_debug_info(input_dict)
input_df = pd.DataFrame([input_dict])
input_encoded = pd.get_dummies(input_df)
model_features = model.feature_names_in_
for col in model_features:
if col not in input_encoded.columns:
input_encoded[col] = 0
input_encoded = input_encoded[model_features]
pred = model.predict(input_encoded)[0]
prob = model.predict_proba(input_encoded)[0][1] * 100
result = "🧠 Alzheimer's Detected" if pred == 1 else "✅ No Alzheimer's Detected"
return f"{result} | Risk Probability: {prob:.2f}%"
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("## 🧠 Alzheimer's Disease Predictor")
gr.Markdown("Enter patient details below to predict Alzheimer's risk using a Random Forest model.")
with gr.Row():
with gr.Column():
age = gr.Slider(40, 100, step=1, label="Age")
gender = gr.Radio(["Male", "Female"], label="Gender")
bmi = gr.Slider(15, 40, step=0.1, label="BMI")
physical = gr.Radio(["Low", "Medium", "High"], label="Physical Activity Level")
smoking = gr.Radio(["Never", "Former", "Current"], label="Smoking Status")
alcohol = gr.Radio(["Never", "Occasionally", "Regularly"], label="Alcohol Consumption")
diabetes = gr.Radio(["No", "Yes"], label="Diabetes")
hypertension = gr.Radio(["No", "Yes"], label="Hypertension")
cholesterol = gr.Radio(["Normal", "High", "Low"], label="Cholesterol Level")
with gr.Column():
family = gr.Radio(["No", "Yes"], label="Family History of Alzheimer’s")
cognitive = gr.Slider(0, 100, step=1, label="Cognitive Test Score")
depression = gr.Radio(["Low", "Medium", "High"], label="Depression Level")
sleep = gr.Radio(["Poor", "Average", "Good"], label="Sleep Quality")
diet = gr.Radio(["Healthy", "Average", "Unhealthy"], label="Dietary Habits")
genetic = gr.Radio(["No", "Yes"], label="Genetic Risk Factor (APOE-ε4 allele)")
engagement = gr.Radio(["Low", "Medium", "High"], label="Social Engagement Level")
income = gr.Radio(["Low", "Medium", "High"], label="Income Level")
stress = gr.Radio(["Low", "Medium", "High"], label="Stress Levels")
with gr.Row():
submit_btn = gr.Button("🔍 Predict Alzheimer's Risk", scale=2)
output = gr.Textbox(label="Prediction")
submit_btn.click(
fn=predict_alzheimers,
inputs=[
age, gender, bmi, physical, smoking, alcohol, diabetes,
hypertension, cholesterol, family, cognitive, depression,
sleep, diet, genetic, engagement, income, stress
],
outputs=output
)
if __name__ == "__main__":
demo.launch()