تقنية

ترميز أسماء المخرجات: هل يخص LabelEncoder جدول الميزات؟

جدول من ثلاث بطاقات وميزتين منفصل عن ثلاثة أسماء أهداف تحولها خريطة فحص وقبول إلى رموز صفر وواحد
رسم مؤلف يفصل دور جدول الميزات عن متجه الهدف.

ترميز أسماء المخرجات يختلف عن تجهيز أسماء الفئات داخل ميزات الإدخال. تحدد وثائق LabelEncoder أنه مخصص لقيم الهدف y، وليس جدول المدخل X. [1] نضع ثلاثة صفوف تعليمية ثم نرسم الجدول ومتجه إجاباتها منفصلين، كي يتضح ما الذي نريد تحويله.

الخلاصة السريعة

لا تستعمل اسم LabelEncoder بوصفه محولا عاما لجدول الميزات؛ عقده الموثق يخص متجه الهدف، وله معنى مختلف عن جدول المدخل.

  • توثق LabelEncoder ترميز وسوم الهدف بقيم من صفر إلى عدد الفئات ناقص واحد، وتخصصه لـy لا X. [1]
  • في مثالنا ثلاثة صفوف بميزتين: نوع المادة وعدد القطع. الهدف لكل صف اسم نتيجة واحد؛ لذلك شكل جدول المدخل ثلاثة في اثنين، ومتجه الهدف يحوي ثلاثة أسماء.
  • نعلن خريطة فحص إلى 0 وقبول إلى 1 ، فيصبح هدفنا فحص وقبول وفحص ممثلا بـ 0 و 1 و 0. لم نغير نوع المادة أو عدد القطع، ولم ننفذ المحول.
  • يحفظ classes_ أسماء فئات LabelEncoder. [1] احتفظ بمعنى الرموز وعلاقة كل إجابة بصفها؛ لا تجعل الرمز ترتيبا لجودة النتيجة أو بديلا عن اختيار محول مناسب لميزاتك.

ما الحقل الذي تسميه هدفا؟

ينص توثيق LabelEncoder على استعماله لقيم الهدف لا المدخل، ويعرض fit(y) بمتجه ذي طول عدد العينات. [1]

نؤلف مهمة لها ثلاث بطاقات، ونضع في كل بطاقة نوع مادة وعدد قطع. ونعلن نتيجة مرجعية تعليمية واحدة للبطاقة، اسمها إما فحص أو قبول. هذه تسميات نضعها لشرح شكل البيانات؛ لا نزعم أنها نتائج فحص أجسام حقيقية.

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

كيف نفصل الجدول عن متجه الإجابات؟

جدولنا يحتوي خشب و 4 في الصف الأول، وورق و 9 في الثاني، وخشب و 7 في الثالث. نعد ثلاثة صفوف وميزتين، أي ست خانات مدخل. أما الأهداف فهي فحص وقبول وفحص، وعددها ثلاثة.

لا نحسب ستة أهداف لأن X فيه ست خانات. العلاقة التي اخترناها إجابة واحدة لكل صف، لا إجابة لكل ميزة. ونحفظ ترتيب الصفوف بحيث يعود الهدف الأول إلى البطاقة الأولى، ثم الثاني إلى الثانية والثالث إلى الثالثة.

لو فصلنا الجدول والأهداف في ملفين، فلن يضمن تطابق عدد الصفوف صحة هذا الربط وحده. في مثالنا نعلن معرفات البطاقات أ وب وج، ونراجعها عند نقل السجلات. لا نعيد ترتيب الأهداف باستقلال عن المدخلات ثم نسمي النقل صحيحا.

بطاقة المثالميزتا المدخلاسم الهدفرمز الهدف المعلن
أخشب؛ 4 قطعفحص0
بورق؛ 9 قطعقبول1
جخشب؛ 7 قطعفحص0

ما الذي تغيره خريطة الهدف؟

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

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

يعرض التوثيق classes_ لحفظ اسم كل فئة. [1] لا نقدم متجهنا كخرج استدعاء للمكتبة أو نختار على أساسه نموذجا أفضل؛ الخريطة المعلنة تساعدنا على فصل وظيفة الهدف عن وظيفة المدخل.

كيف تصف مهمة الترميز قبل تشغيلها؟

اكتب أولا: أريد تحويل أسماء الإجابات المرتبطة بالصفوف، أم أريد تحويل قيم عمود فئوي من الميزات؟ ثم سجل الشكل المطلوب وأسماء الفئات وخريطة المخرج. السؤالان قد يستعملان كلمات متشابهة، لكنهما يطلبان مدخلين بوظيفتين مختلفتين.

يوجه وصف LabelEncoder إلى عقد الهدف، ويشير إلى OrdinalEncoder لترميز الميزات الفئوية. [1] هذه إشارة لوظيفة الأدوات، وليست توصية أن الترميز الرتبي يلائم كل ميزة أو مهمة. لم نشغل أيا منهما.

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

المصادر ومتابعة القراءة

  1. scikit-learn: LabelEncoder (يفتح في نافذة جديدة)scikit-learn.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.