اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته،

كلاهما يتم استخدامهما في معالجة البيانات وخصوصا عند التعامل مع المتغيرات الفئوية في تعلم الآلة أبرز الفروق بينهما هي كالآتي:

أولا، LabelEncoder يستخدم لتحويل القيم النصية أو الفئوية (categorical) إلى قيم عددية (numeric) بحيث يتم إعطاء كل فئة رقما صحيحا ويتم استخدامه عندما تكون الفئات مرتبة أو عند الحاجة لتصنيف واحد فقط لكل فئة مثلا إذا كانت لديك قائمة بالفئات التالية:

['Red', 'Green', 'Blue']

فسيقوم بتحويلها إلى التالي:

[0, 1, 2]

أما OneHotEncoder فيحول كل فئة إلى مجموعة من الأرقام الثنائية (binary) بحيث يكون لكل فئة عمود منفصل، ويتم وضع 1 في العمود الذي يمثل الفئة والباقي 0 ونستخدمه عندما نحتاج إلى تمثيل غير مرتب للفئات مثلا إذا كان لدينا نفس القائمة السابقة فسيتم تحويلها إلى:

Red   Green   Blue
1     0       0
0     1       0
0     0       1

لو تركز قليلا ستجد أنّ LabelEncoder يعطي تمثيلا عدديا بسيطا، بينما OneHotEncoder يفصل كل فئة في عمود مستقل، وهو أكثر شمولا للفئات غير المرتبة.

  • 0
نشر

LabelEncoder يقوم بتحويل القيم الفئوية (مثل أحمر، أخضر، أزرق) إلى قيم رقمية صحيحة (مثل 0، 1، 2)، أي يعين رقمًا فريدًا لكل فئة حسب ترتيب ظهورها في البيانات أو ترتيب أبجدي.

ونستخدمه مع البيانات Ordinal Categorical Data، أي البيانات التي تحمل ترتيبًا أو تسلسلًا منطقيًا (مثل منخفض، متوسط، مرتفع).

أيضًا مع البيانات الفئوية الاسمية Nominal Categorical Data مثل الألوان، ولكن بحذر شديد، لأن ذلك أحيانًأ يؤدي إلى مشاكل في بعض الخوارزميات مثل إدخال ترتيب غير مرغوب حيث الأرقام التي يعينها قد تفهمها الخوارزمية على أنها ترتيب أو علاقة، وهذا غير صحيح، بمعنى قد تفهم الخوارزمية أن أزرق (2) أكبر من أحمر (0)، وذلك غير منطقي.

وأحيانًا يؤثر على أداء بعض الخوارزميات (مثل الانحدار الخطي) تتأثر سلبًا بالترتيب غير المنطقي الذي قد يضيفه LabelEncoder للبيانات الاسمية.

بينما OneHotEncoder يقوم بتحويل القيم الفئوية إلى أعمدة ثنائية (0 أو 1) لكل فئة، أي  ينشئ عمودًا جديدًا وفي حال القيمة في الصف تنتمي إلى تلك الفئة، يضع 1 في العمود المقابل، وإلا يضع 0.

ويستخدم بشكل أساسي مع Nominal Categorical Data، حيث لا يوجد ترتيب منطقي بين الفئات، وأيضًا مع البيانات الترتيبية، ولكن ربما يؤدي إلى زيادة كبيرة في عدد الأعمدة (الأبعاد) في حال كان عدد الفئات كبيرًا.

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

ومن عيوبه أحيانًا زيادة كبيرة في عدد الأعمدة (الأبعاد) في حال عدد الفئات كبيرًا، بالتالي يؤثر على أداء بعض الخوارزميات أو يزيد من استهلاك الذاكرة.

أيضًأ مشكلة التعدد الخطي Multicollinearity لو هناك علاقة خطية بين بعض الأعمدة الناتجة عن OneHotEncoder، الأمر الذي يؤثر على بعض الخوارزميات (مثل الانحدار الخطي)، وتستطيع حل المشكلة باستخدام تقنيات مثل حذف أحد الأعمدة أو استخدام Regularization.

  • 0
نشر
بتاريخ 12 دقائق مضت قال عبد الوهاب بومعراف:

ولا، LabelEncoder يستخدم لتحويل القيم النصية أو الفئوية (categorical) إلى قيم عددية (numeric) بحيث يتم إعطاء كل فئة رقما صحيحا ويتم استخدامه عندما تكون الفئات مرتبة أو عند الحاجة لتصنيف واحد فقط لكل فئة مثلا إذا كانت لديك قائمة بالفئات التالية:

['Red', 'Green', 'Blue']

فسيقوم بتحويلها إلى التالي:

[0, 1, 2]

طيب ممكن ان اتحكم في القيمه يعني انا مش عاوز يكون الحمر يكون 0 عاوز مثلاا يكون 4 هل اقدر انا اعمل كده ؟

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...