Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import joblib | |
| import numpy as np | |
| # Load trained model | |
| model = joblib.load("xgboost_model.pkl") | |
| # 🔧 Preprocessing Function | |
| def preprocess(age, gender, bmi, smoking, alcohol, diabetes, hypertension, family_history, cognitive_score, apoe4): | |
| gender = 1 if gender == "Male" else 0 | |
| smoking = {"Non-Smoker": 0, "Smoker": 1, "Former Smoker": 2}[smoking] | |
| alcohol = {"None": 0, "Moderate": 1, "Heavy": 2}[alcohol] | |
| diabetes = 1 if diabetes == "Yes" else 0 | |
| hypertension = 1 if hypertension == "Yes" else 0 | |
| family_history = 1 if family_history == "Yes" else 0 | |
| apoe4 = 1 if apoe4 == "Yes" else 0 | |
| return np.array([[age, gender, bmi, smoking, alcohol, diabetes, hypertension, family_history, cognitive_score, apoe4]]) | |
| # 🧠 Prediction Function | |
| def predict_alzheimers(age, gender, bmi, smoking, alcohol, diabetes, hypertension, family_history, cognitive_score, apoe4): | |
| features = preprocess(age, gender, bmi, smoking, alcohol, diabetes, hypertension, family_history, cognitive_score, apoe4) | |
| # Debug: print features being sent to model | |
| print("🛠️ Processed input sent to model:", features) | |
| # Predict probability of class 1 (positive) | |
| proba = model.predict_proba(features)[0][1] | |
| proba_percent = round(proba * 100, 2) | |
| if proba >= 0.5: | |
| return f"🧠 Likely Alzheimer’s Positive ({proba_percent}%)" | |
| else: | |
| return f"✅ Likely Alzheimer’s Negative ({100 - proba_percent}%)" | |
| # 🎨 Gradio Interface | |
| interface = gr.Interface( | |
| fn=predict_alzheimers, | |
| inputs=[ | |
| gr.Number(label="Age"), | |
| gr.Radio(["Male", "Female"], label="Gender"), | |
| gr.Number(label="BMI"), | |
| gr.Radio(["Non-Smoker", "Smoker", "Former Smoker"], label="Smoking Status"), | |
| gr.Radio(["None", "Moderate", "Heavy"], label="Alcohol Consumption"), | |
| gr.Radio(["Yes", "No"], label="Diabetes"), | |
| gr.Radio(["Yes", "No"], label="Hypertension"), | |
| gr.Radio(["Yes", "No"], label="Family History of Alzheimer’s"), | |
| gr.Number(label="Cognitive Test Score"), | |
| gr.Radio(["Yes", "No"], label="APOE-ε4 allele Present?") | |
| ], | |
| outputs="text", | |
| title="Alzheimer’s Prediction App", | |
| description="🔍 Enter details to predict Alzheimer’s risk using XGBoost model" | |
| ) | |
| if __name__ == "__main__": | |
| interface.launch() | |