ghinaAI/Heart_Failure_Prediction
0
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 