CoolFace
Apppublic

ghinaAI/Heart_Failure_Prediction

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
app.py76 linesDownload Raw Back to root
1import gradio as gr2import joblib3import numpy as np4 5model = joblib.load("rf_model.pkl")6 7def predict_heart_disease(Age, Sex, ChestPainType, RestingBP, Cholesterol, FastingBS,8                          RestingECG, MaxHR, ExerciseAngina, Oldpeak, ST_Slope):9    10    input_data = np.array([[Age, Sex, ChestPainType, RestingBP, Cholesterol, FastingBS,11                            RestingECG, MaxHR, ExerciseAngina, Oldpeak, ST_Slope]])12    13    prediction = model.predict(input_data)[0]14    proba = model.predict_proba(input_data)[0][1]15 16    result = "نعم ❤️‍🔥" if prediction == 1 else "لا 💚"17    suggestions = []18 19    # اقتراحات عامة حسب النتيجة20    if prediction == 1:21        suggestions.append("⚠️ أنت معرض لخطر الإصابة بفشل القلب. ننصحك بمراجعة طبيب مختص في أقرب وقت.")22    else:23        suggestions.append("✅ لا توجد مؤشرات قوية لفشل القلب حالياً، لكن يُفضل الاستمرار بمتابعة نمط حياتك الصحي.")24 25    # اقتراحات مخصصة حسب المدخلات26    if Cholesterol > 240:27        suggestions.append("🔴 نسبة الكوليسترول مرتفعة، قلل من الدهون المشبعة وتجنب الأطعمة السريعة.")28 29    if RestingBP > 130:30        suggestions.append("🧂 ضغط الدم في حالة غير مثالية، قلل من تناول الملح وتجنب التوتر.")31 32    if ExerciseAngina == 1:33        suggestions.append("🚶‍♂️ تعاني من ألم أثناء التمارين، حاول تقليل المجهود البدني الشديد وقم بفحص القلب.")34 35    if FastingBS == 1:36        suggestions.append("🍬 معدل السكر الصائم مرتفع، راقب نسبة السكر في غذائك وتجنب السكريات المكررة.")37 38    if MaxHR < 100:39        suggestions.append("❤️ معدل ضربات القلب الأقصى منخفض، قد يدل ذلك على ضعف في اللياقة القلبية.")40 41    if Oldpeak > 2:42        suggestions.append("📉 وجود انخفاض كبير في ST، راجع الطبيب لفحص مخطط القلب بدقة.")43 44    if Age > 60:45        suggestions.append("👴 العمر عامل خطر إضافي، من المهم الالتزام بالمتابعة الدورية مع الطبيب.")46 47    # دمج النتيجة والاقتراحات48    final_output = f"🔍 النتيجة: {result}\n\n🧠 نسبة الخطر: {round(proba*100, 2)}%\n\n💡 اقتراحات:\n- " + "\n- ".join(suggestions)49 50    return final_output51 52 53# واجهة الإدخال54inputs = [55    gr.Number(label="العمر"),56    gr.Dropdown([0, 1], label="الجنس (0 = أنثى، 1 = ذكر)"),57    gr.Dropdown([0, 1, 2, 3], label="نوع ألم الصدر (0=ASY, 1=NAP, 2=ATA, 3=TA)"),58    gr.Number(label="ضغط الدم أثناء الراحة"),59    gr.Number(label="الكوليسترول"),60    gr.Dropdown([0, 1], label="سكر صائم (0=لا، 1=نعم)"),61    gr.Dropdown([0, 1, 2], label="مخطط القلب أثناء الراحة (0=طبيعي، 1=ST، 2=LVH)"),62    gr.Number(label="أقصى معدل لضربات القلب"),63    gr.Dropdown([0, 1], label="ألم التمارين (0=لا، 1=نعم)"),64    gr.Number(label="الانخفاض ST (Oldpeak)"),65    gr.Dropdown([0, 1, 2], label="انحدار ST (0=مرتفع، 1=مسطح، 2=منخفض)"),66]67 68# واجهة غريديو69gr.Interface(70    fn=predict_heart_disease,71    inputs=inputs,72    outputs="text",73    title="مُتنبئ بفشل القلب 💓",74    description="أدخل معلوماتك الصحية وسيتم عرض احتمالية الإصابة بفشل القلب مع نصائح مخصصة"75).launch()76