يعتمد RadiusNeighborsClassifier على الجيران داخل نصف قطر محدد؛ يمكن أن يختلف عددهم بين الحالات، ويشمل البحث النقاط الواقعة على الحد. [1]
الخلاصة السريعة
ثبت نصف القطر ومقياس المسافة قبل عد الجيران. غيابهم يحتاج معالجة صريحة، ولا يعادل وجود فئة تؤيدها نقاط قريبة.
- في البحث الموثق، تدخل المسافات المساوية لنصف القطر أيضًا؛ العدد يتغير حسب موضع الحالة. [1]
- في المثال الإقليدي ذي نصف القطر 0.5 والتصويت المتساوي، للحالة صفر ثلاثة جيران، وللحالة 2 جار واحد.
- الحالة 3 لا تجد جارًا داخل 0.5، لكن اختيار ثلاثة أقرب جيران يعطيها فئة من نقاط أبعد؛ القاعدتان تجيبان سؤالين مختلفين.
- في التنفيذ الموثق، outlier_label=None يرفع خطأ عند غياب الجيران؛ إسناد فئة بديلة لا يولد دليلًا قريبًا. [1]
المسافة المسموحة بدل العدد المطلوب
نختار المسافة الإقليدية على خط عددي ونصف قطر 0.5، مع مساهمة متساوية لكل جار. النقاط المسجلة هي −0.5 من ب، و 0.1 و 0.3 من أ، و 2 من ب، و 4 من أ.
نحسب المسافة المطلقة من كل حالة جديدة إلى هذه النقاط. ندرج فقط المسافات التي لا تتجاوز 0.5. قاعدة العد هنا لا تطلب الوصول إلى ثلاثة جيران بأي ثمن.
اكتب الوحدة التي يقاس بها الخط مع نصف القطر. لا تكفي عبارة «نصف قطر صغير» لتحديد النقاط المختارة؛ فهي تحتاج رقمًا ومقياسًا ومدخلات معلومة. اخترنا هذه العناصر مقدمًا لتتضح العضوية في كل جوار.
ثلاثة جيران هنا وجار واحد هناك
للحالة صفر، المسافات إلى −0.5 و 0.1 و 0.3 هي 0.5 و 0.1 و 0.3. تدخل الثلاثة، بما فيها النقطة على الحد. تحصل أ على صوتين وب على صوت، فتفوز أ.
للحالة 2، تدخل النقطة 2 وحدها بمسافة صفر. أقرب النقاط الأخرى 0.3 تبعد 1.7، وهي خارج النطاق. يعطي التصويت المتساوي ب من جار واحد؛ لم نجبر القاعدة على إضافة جار ثان.
الأمثلة من إعداد المقال، ولم نشغل المصنف. ولا نستنتج أن الحالة ذات ثلاثة جيران أصح قرارًا من ذات الجار الواحد؛ لم نقدم حقيقة فئة الحالة الجديدة أو فحصًا لصحة التسميات المسجلة.
حالة بلا جار ومقارنة مع k ثابتة
الحالة 3 تبعد 1 عن كل من 2 و 4، وتبعد أكثر عن النقاط الباقية. لا يوجد أي جار ضمن نصف القطر 0.5، فلا نستخرج تصويتًا من قائمة فارغة.
إذا طلبنا بدلًا من ذلك ثلاثة أقرب جيران، فسندخل 2 و 4 و 0.3، وتسمياتها ب وأ وأ. تفوز أ بالعد المتساوي، لكن أقرب المصوتين نفسه يبعد 1، أي خارج النطاق السابق.
التعادل بين مسافتي 2 و 4 لا يغير قائمة الجيران الثلاثة في هذا المثال؛ يدخل الاثنان. فرق الفئة المتاحة ناتج عن تعريف الجوار، وليس دليلًا أن الحالة 3 شاذة في الواقع أو أن نصف القطر المختار مناسب للمهمة.
كيف نقرأ معالجة القائمة الفارغة؟
يوثق المصنف أن الإعداد الافتراضي outlier_label=None يرفع ValueError للحالة بلا جيران، ويمكن تحديد فئة بديلة أو most_frequent. [1]
إذا أسند نظام فئة بديلة للحالة 3، فافصلها في التقرير عن التصويت المحلي: لم يظهر جار جديد داخل النطاق. اسم هذا الخيار البرمجي لا يثبت أن الحالة عيب أو خطأ في البيانات.
قبل المقارنة العملية، حدد كيف ستعرض الحالات التي لم تجد جيرانًا، وكم منها وقع فعلًا. لم نقس هذه النسبة على ملف حقيقي. المثال يوضح سبب الحاجة إلى المعالجة، ويمنع الخلط بين فئة افتراضية ودليل من جوار قريب.
المصادر ومتابعة القراءة
- scikit-learn: RadiusNeighborsClassifier (يفتح في نافذة جديدة)scikit-learn.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
