الفئة الجديدة والقيمة المفقودة في الترميز الرتبي حالتان مختلفتان. قد تصل قيمة معلومة خارج قائمة الفئات التي اعتمدناها، وقد يصل غياب بلا فئة معلومة. نختار إعدادا محددا لـOrdinalEncoder يفصل رمزيهما، ونحصر المثال في غياب ممثل بـNaN وقت التهيئة.
الخلاصة السريعة
نختار رمزين منفصلين للفئة غير المعروفة وللغياب الممثل في التهيئة؛ الرمز المختلف يحفظ الحالة، ولا يعوض معلومة الفئة الأصلية.
- يفصل OrdinalEncoder إعداد رمز الفئة غير المعروفة عن رمز القيمة المفقودة. [1]
- نفترض تهيئة فيها فئتا 10 و 20 وNaN، ونختار use_encoded_value مع unknown_value سالب 1 وencoded_missing_value سالب 2 ، ونوع خرج عشريا. نعرض المعروفين 0 و 1 ، والجديد 30 بسالب 1 ، والغياب بسالب 2.
- يشترط التوثيق أن يختلف رمز الجديد عن رموز الفئات المعروفة. [1] جدولنا يخص NaN التي كانت ممثلة وقت التهيئة؛ لا نعممه على كل نص فارغ أو غياب جديد بسياسة أخرى.
- لا يبين سالب 1 اسم كل فئة جديدة، ولا يبين سالب 2 سبب الغياب. احتفظ بالأصل والخريطة والسياسة؛ الأرقام هنا رموز ولا تقيس أهمية الفئات أو جودة النموذج.
أي إعداد يفرق بين الحالتين؟
يعرض التوثيق unknown_value للفئة غير المعروفة مع handle_unknown="use_encoded_value"، وencoded_missing_value للقيمة المفقودة. [1]
نؤلف تهيئة لعمود فئات يضم 10 و 20 وحالة NaN. الأعداد 10 و 20 أسماء رقمية لفئتين، وليست كميات نقيسها. نترك الفئات تستخرج من هذا المدخل، ونختار نوع خرج float64. ثم نعين رمز غير المعروف سالب 1 ورمز الغياب سالب 2 ، دون تجميع للفئات النادرة.
وجود NaN في التهيئة جزء من المسألة التي نصفها، وليس تفصيلا نحذفه عند تلخيص الجواب. ولا نفترض أن السلسلة النصية «NaN» أو «NULL» هي قيمة NaN العددية نفسها. يحتاج تعريف الغياب في المصدر إلى خطوة مستقلة قبل هذا المثال.
كيف نقرأ أربعة مداخل لاحقة؟
نعرض رموز الفئتين المعروفتين باختصار 0 و 1 ، وفق ترتيب 10 ثم 20. تصل الفئة 30 بقيمة معلومة، لكنها خارج هاتين الفئتين؛ نعرضها برمز الجديد سالب 1. أما وصول NaN في الحالة المذكورة فيمثل بسالب 2.
إذن عدم المعرفة هنا يتعلق بقائمة الفئات المعتمدة، لا بجهل كل شيء عن القيمة الواصلة. لدينا الرقم 30 في الأصل ويمكن الرجوع إليه. في صف الغياب لا توجد فئة معلومة نساويها بهذا الرقم أو نخترع لها اسما.
الجدول تفسير لإعداد على مدخلات اخترناها، وليس صورة من جلسة تشغيل. كتابة 0 بدلا من 0.0 تختصر العرض ولا تغير اختيارنا للنوع العشري.
| المدخل في مثالنا | حالته | الرمز المعروض |
|---|---|---|
| 10 | فئة معروفة | 0 |
| 20 | فئة معروفة | 1 |
| 30 | فئة جديدة خارج القائمة | سالب 1 |
| NaN | غياب ممثل وقت التهيئة | سالب 2 |
ما القيود التي تبقي الرمزين مفهومين؟
يشترط التوثيق أن يكون unknown_value مميزا عن رموز الفئات التي استعملت أثناء التهيئة. [1]
في جدولنا يختلف سالب 1 عن 0 و 1 ، كما اخترنا سالب 2 لتمييز الغياب عنه. لو استخدمنا في عرض تعليمي الرمز نفسه للجديد والمفقود، لمحونا الفصل الذي نريد الاحتفاظ به. اختيار قيمتين مختلفتين هنا جزء من عقدنا المعلن.
نراجع نوع الغياب وقائمة التهيئة والخيارات معا. لا تعد هذه الأرقام وعدا بأن أي غياب يظهر في أي عمود سيأخذ سالب 2 تحت إعداد مختلف؛ ولا ننقلها إلى إعداد error أو إلى أداة أخرى تشترك في اسم الترميز.
ماذا لا نستعيد من الرمز وحده؟
إذا وصل 30 ثم 40 بوصفهما فئتين جديدتين تحت خريطتنا، يملك كلاهما رمز غير المعروف نفسه. لذلك يخبرنا سالب 1 بالحالة ولا يخبرنا أي اسم أصلي وصل. نحتفظ بالقيمة الأصلية إن كان هذا التفصيل مطلوبا للمراجعة.
وبالمثل لا يشرح رمز الغياب لماذا لم تسجل الفئة. نربط الرمز بتعريفه، لا بحكم أن الفئة منخفضة الرتبة أو أن السجل صحيح. المثال يميز حالتي الإدخال في تمثيل واحد؛ لم ننفذ ترميزا أو تعويضا، ولم نقس أثر هذه السياسة على التنبؤ.
المصادر ومتابعة القراءة
- scikit-learn 1.9.1: OrdinalEncoder (يفتح في نافذة جديدة)scikit-learn.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
