برمجة خوارزمية تشخيص - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: مثال كود بايثون: دالة تشخيص

📚 معلومات الصفحة

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: example

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

تقدم هذه الصفحة تحسينًا لخوارزمية التشخيص الطبي من خلال استبدال المنطق البسيط الذي يعتمد على عد الأعراض بدالة تسجيل نقاط مرجحة. تسمح الدالة بتخصيص أوزان للأعراض الشائعة جدًا والأقل شيوعًا، مما يوفر مرونة للمستخدمين في تحديد الأوزان المناسبة. يتم حساب مجموع النقاط الموزون لكل مرض بناءً على أعراض المريض، ويتم تضمين الأمراض ذات المجموع الأعلى في التشخيص النهائي.

يتم عرض مثال عملي باستخدام لغة بايثون، حيث تُعرّف دالة `diagnose_v3` التي تأخذ قائمة أعراض المريض وملف تعيين الأعراض كمدخلات. تستخدم الدالة مكتبة `defaultdict` لتتبع النقاط، وتقارن الأعراض مع قوائم الأعراض الشائعة جدًا والأقل شيوعًا لكل مرض، وتضيف الأوزان المحددة إلى النقاط.

يتم تحديد التشخيص من خلال إيجاد الحد الأقصى للنقاط وإرجاع جميع الأمراض التي تحقق هذه القيمة، مع إمكانية إرجاع قائمة فارغة إذا لم تكن هناك نقاط. هذا النهج يعزز الدقة والكفاءة في أنظمة التشخيص الطبي المساعدة.

📄 النص الكامل للصفحة

لن يُنظر إلى المنطق الذي يقتصر على عدد الأعراض، وسيُستبدل بدالة تسجيل النقاط التي تعطي أوزانًا مخصصة للأعراض الأكثر والأقل شيوعًا. ستتوفر للمستخدم كذلك المرونة لتحديد الأوزان التي يراها مناسبة. سيتم تضمين المرض أو الأمراض ذات المجموع الموزون الأعلى في التشخيص.--- SECTION: مثال كود بايثون: دالة تشخيص --- from collections import defaultdict def diagnose_v3(patient_symptoms:list, symptom_mapping_file:str, very_common_weight:float=1, less_common_weight:float=0.5 ):with open(symptom_mapping_file) as f: mapping=json.load(f)disease_info=mapping['diseases']# holds a symptom-based score for each potential disease disease_scores=defaultdict(int)for disease in disease_info:# get the very common symptoms of the disease very_common_symptoms=disease_info[disease]['very common']# get the less common symptoms for this disease less_common_symptoms=disease_info[disease]['less common']for symptom in patient_symptoms:if symptom in very_common_symptoms: disease_scores[disease]+=very_common_weight elif symptom in less_common_symptoms: disease_scores[disease]+=less_common_weight# find the max score all candidate diseases max_score=max(disease_scores.values())if max_score==0: return []else: # get all diseases that have the max score diagnosis=[disease for disease in disease_scores if disease_scores[disease]==max_score]return diagnosis, max_score2023 - 1447--- VISUAL CONTEXT ---Context: معلومات تعريفية بالجهة الناشرة ورقم الصفحة.

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 4 بطاقة لهذه الصفحة

ما هو الفرق الأساسي في طريقة التشخيص المقترحة في الصفحة مقارنة بالمنطق الذي يقتصر على عدد الأعراض؟

الإجابة: الفرق الأساسي هو استبدال المنطق الذي يعتمد على عدد الأعراض فقط بدالة تسجيل النقاط التي تعطي أوزانًا مخصصة للأعراض بناءً على شيوعها، مما يسمح بتشخيص أدق.

الشرح: الدالة الجديدة تعالج كل عرض بقيمة (وزن) تعكس مدى شيوعه، بدلاً من مجرد عد تكرار العرض. هذا يسمح بإعطاء أهمية أكبر للأعراض النادرة أو الأقل شيوعًا في بعض الحالات.

تلميح: فكر في كيفية تأثير شيوع العرض على أهميته في التشخيص.

ما هي المرونة التي توفرها الدالة المقترحة للمستخدم فيما يتعلق بتحديد أوزان الأعراض؟

الإجابة: تسمح الدالة للمستخدم بتحديد الأوزان التي يراها مناسبة للأعراض المختلفة، مما يعطيه تحكمًا أكبر في عملية التشخيص.

الشرح: المعلمات `very_common_weight` و `less_common_weight` في دالة `diagnose_v3` تتيح للمستخدم تعيين قيم مختلفة لكل نوع من الأعراض، مما يعكس أهميتها النسبية في التشخيص.

تلميح: ما هو الجزء من الدالة الذي يمكن للمستخدم تعديله ليعكس تقديره لبعض الأعراض؟

كيف يتم تحديد المرض أو الأمراض النهائية في التشخيص باستخدام الدالة المقترحة؟

الإجابة: يتم تحديد المرض أو الأمراض النهائية بناءً على مجموع النقاط الموزونة للأعراض الظاهرة على المريض. المرض (أو الأمراض) ذات المجموع الموزون الأعلى هو (هي) الذي (اللتي) يتم تشخيصه.

الشرح: بعد حساب مجموع النقاط لكل مرض بناءً على الأعراض التي يعاني منها المريض والأوزان المحددة، يتم اختيار المرض (أو الأمراض) التي حصلت على أعلى مجموع نقاط. هذا يضمن أن التشخيص يعتمد على التقييم الشامل للأعراض.

تلميح: ما هو المعيار الذي تُقارن به النقاط المجمعة لتحديد النتيجة النهائية؟

في دالة `diagnose_v3`، ما هو الدور الذي تلعبه المكتبة `collections.defaultdict`؟

الإجابة: تُستخدم `defaultdict` لتهيئة قاموس `disease_scores` بحيث يتم إنشاء مفاتيح جديدة بقيمة افتراضية (في هذه الحالة، 0) تلقائيًا عند الوصول إليها لأول مرة، مما يسهل عملية تجميع النقاط لكل مرض دون الحاجة للتحقق المسبق من وجود المفتاح.

الشرح: بدلاً من الاضطرار لكتابة `if disease not in disease_scores: disease_scores[disease] = 0` قبل إضافة قيمة، تسمح `defaultdict(int)` بإضافة النقاط مباشرة (`disease_scores[disease] += weight`)، حيث تكون القيمة الافتراضية للمفتاح الجديد هي 0.

تلميح: ما هي ميزة استخدام `defaultdict` عند تجميع القيم عبر مفاتيح قد لا تكون موجودة بعد؟