0Pricing
Learn AI with Python · درس

ترميز المتغيرات الفئوية

ترميز التسميات، والترميز one-hot، والترميز الترتيبي، وpd.get_dummies() مقابل sklearn OrdinalEncoder.

ترميز المتغيرات الفئوية درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

لماذا نُرمّز الفئات؟

تحتاج معظم نماذج تعلّم الآلة إلى أرقام، لا إلى تسميات نصية مثل "أحمر" أو "صغير". يحوّل الترميز المتغيرات الفئوية إلى صيغة رقمية مع الحفاظ على معناها.

البيانات الرتبية مقابل الاسمية

للفئات الرتبية ترتيب طبيعي (small < medium < large). أما الفئات الاسمية فلا ترتيب لها (red, green, blue). ويعتمد الترميز الصحيح على نوع الفئات الموجودة لديك.

ترميز التسميات للفئات الرتبية

يحوّل LabelEncoder كل فئة إلى عدد صحيح. ويكون مناسبًا للبيانات الرتبية التي يحمل فيها ترتيب الأعداد الصحيحة معنى.

from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes))   # integers (alphabetical by default)

خطر استخدامه مع الفئات الاسمية

يُعد تطبيق ترميز التسميات على البيانات الاسمية أمرًا محفوفًا بالمخاطر: فقد يفسر النموذج red=0 وgreen=1 وblue=2 على أن green تقع "بين" red وblue، فيختلق ترتيبًا غير حقيقي. استخدم one-hot encoding بدلًا من ذلك.

الترميز One-Hot باستخدام get_dummies

ينشئ pd.get_dummies عمودًا ثنائيًا واحدًا لكل فئة. ويكون عمود واحد فقط مساويًا لـ 1 في كل صف، من دون ترتيب ضمني، مما يجعله مثاليًا للمتغيرات الاسمية.

import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))

مشكلة المتغيرات الوهمية

عندما تنتج k فئات عددًا قدره k من الأعمدة، تكون هذه الأعمدة مرتبطة خطيًا ارتباطًا تامًا (إذ يساوي مجموعها دائمًا 1). تؤدي مشكلة المتغيرات الوهمية هذه إلى تعطل النماذج الخطية. احذف عمودًا واحدًا لحلها.

drop_first

يزيل drop_first=True فئةً واحدة، ويترك k-1 من الأعمدة. وتصبح الفئة المحذوفة خط الأساس الضمني (كل القيم صفر)، مما يزيل الارتباط الخطي.

print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baseline

OrdinalEncoder في sklearn

بالنسبة إلى مسارات المعالجة، يُعد OrdinalEncoder المكافئ في sklearn لترميز التسميات الخاص بالسمات، كما يتيح لك تحديد ترتيب الفئات صراحةً.

from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))

OneHotEncoder في sklearn

يُعد OneHotEncoder أداة one-hot الملائمة لمسارات المعالجة. فهو يتعلم الفئات من بيانات التدريب ويطبق التعيين نفسه على البيانات الجديدة، وهذا أمر أساسي في بيئة الإنتاج.

from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))

التعامل مع الفئات غير المعروفة

قد تحتوي بيانات الاختبار على فئات لم تظهر مطلقًا أثناء التدريب. عيّن handle_unknown="ignore" لكي يُخرج OneHotEncoder أصفارًا في جميع الأعمدة بدلًا من التسبب في خطأ.

ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]]))   # all zeros, no error

الأعمدة عالية التعدد

يؤدي تطبيق one-hot encoding على عمود يحوي آلاف القيم الفريدة إلى تضخم عدد السمات. بالنسبة إلى التعدد العالي، فكّر في target encoding أو hashing أو تجميع الفئات النادرة ضمن فئة "أخرى".

اختبار سريع

اختبر معرفتك بالترميز.

مراجعة

أدوات الترميز:

  • البيانات الرتبية -> ترميز صحيح (LabelEncoder / OrdinalEncoder)
  • البيانات الاسمية -> one-hot (pd.get_dummies / OneHotEncoder)
  • يمنع drop_first=True مشكلة المتغيرات الوهمية
  • استخدم handle_unknown="ignore" مع فئات الاختبار غير المعروفة
  • انتبه إلى تضخم الأعمدة عالية التعدد

الأسئلة الشائعة

هل درس «ترميز المتغيرات الفئوية» مجاني؟

نعم — نص درس «ترميز المتغيرات الفئوية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «ترميز المتغيرات الفئوية»؟

ترميز التسميات، والترميز one-hot، والترميز الترتيبي، وpd.get_dummies() مقابل sklearn OrdinalEncoder. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «ترميز المتغيرات الفئوية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. اكتشاف القيم الشاذة وإزالتها
  2. ترميز المتغيرات الفئوية
  3. تحجيم السمات: التطبيع والتوحيد
  4. بناء خطوط أنابيب المعالجة المسبقة
← العودة إلى Learn AI with Python