import gradio as gr import joblib import numpy as np # تحميل النموذج model = joblib.load("my_model.pkl") # عدد الميزات المطلوبة NUM_FEATURES = 18 # دالة التنبؤ def predict_from_input(text_input): try: # تقسيم المدخلات بفاصلة أو مسافة if "," in text_input: values = [float(x.strip()) for x in text_input.split(",")] else: values = [float(x.strip()) for x in text_input.split()] if len(values) != NUM_FEATURES: return f"❌ يجب إدخال {NUM_FEATURES} قيمة مفصولة بفاصلة أو مسافة فقط." arr = np.array(values).reshape(1, -1) pred = model.predict(arr)[0] if pred == 1: return "✅ التنبؤ: المجموعة 1 ( حالة نشطة)" else: return "✅ التنبؤ: المجموعة 0 ( حالة مستقرة)" except Exception as e: return f"❌ حدث خطأ أثناء المعالجة: {str(e)}" # واجهة Gradio مع شرح للمدخلات iface = gr.Interface( fn=predict_from_input, inputs=gr.Textbox( label="🧾 أدخل 18 قيمة مفصولة بفاصلة أو مسافة", placeholder="مثال: 1, 30, 12, 1, 0, 1, 2, 1, 0, 1, 1, 1, 1, 0, 0, 1, 2, 2", lines=2 ), outputs="text", title="🔍 نموذج تصنيف المرضى", description=""" 💡 أدخل القيم الرقمية المرتبطة بالحالة الصحية للمريض بالترتيب التالي: 1. **الجنس**: 0 = أنثى، 1 = ذكر   2. **العمر** (بالسنوات)   3. **سنوات التعليم**   4. **الرضاعة الطبيعية**: 0 = لا، 1 = نعم   5. **Varicella (الحماق / جدري الماء)**:  1,2,3 6. **Initial_Symptom (الاعراض الاولية)** من 1 الى 15 7. **Mono_or_Polysymptomatic (أحادي الأعراض أو متعدد الأعراض)**: 0 = أحادي، 1 = متعدد   8. **Oligoclonal_Bands (الشرائط قليلة النسيلة)**: قد تكون قيمًا عددية 0 أو 1  .* 9. **LLSSEP (اختبار جهد الإمكانات الحسية الجسدية للأطراف السفلية)**: 0 = سليم، 1 = غير طبيعي   10. **ULSSEP (اختبار جهد الإمكانات الحسية الجسدية للأطراف العلوية)**: 0 = سليم، 1 = غير طبيعي   11. **VEP (  فحص الرؤية البصرية )**: 0 = سليم، 1 = غير طبيعي   12. **BAEP (فحص السمع)**: 0 = سليم، 1 = غير طبيعي   13. **Periventricular_MRI (التصوير بالرنين المغناطيسي حول البطينات)**: 0 = لا، 1 = نعم (لوجود آفات)   14. **Infratentorial_MRI (التصوير بالرنين المغناطيسي تحت الخيمة)**: 0 = لا، 1 = نعم (لوجود آفات)   15. **Cortical_MRI (التصوير بالرنين المغناطيسي القشري)**: 0 = لا، 1 = نعم (لوجود آفات)   16. **Spinal_Cord_MRI (التصوير بالرنين المغناطيسي للحبل الشوكي)**: 0 = لا، 1 = نعم (لوجود آفات)   17. **Initial_EDSS (مقياس الإعاقة الممتدة الأولي)**: (درجة عددية، مثل 1 أو 2 أو 3 أو أكثر)   18. **Final_EDSS (مقياس الإعاقة الممتدة النهائي)**: (درجة عددية، مثل 1 أو 2 أو 3 أو أكثر)   """ ) iface.launch()