المزيد من مقالات التعلم العميق......المزيد من مقالات تعلم الآلة.....مقالات التعلم العميقمقالات تعلم الآلة

معالجة البيانات الفئوية في التعلم الآلي والتعلم العميق

اقرأ في هذا المقال
  • معالجة البيانات الفئوية في التعلم الآلي
  • LabelEncoder
  • LabelBinarizer
  • الملخص

أثناء حل المشكلات بناءً على التصنيف باستخدام التعلم الآلي machine learning، نجد في الغالب مجموعات بيانات مكونة من تسميات فئوية categorical labels لا يمكن معالجتها بواسطة جميع خوارزميات التعلم الآلي. لذلك، إذا كنت تريد معرفة كيفية التعامل مع البيانات الفئوية categorical data في التعلم الآلي، فهذه المقالة مناسبة لك. في هذه المقالة، سأقدم لك تقنيات معالجة البيانات الفئوية في التعلم الآلي وتنفيذها باستخدام بايثون.

معالجة البيانات الفئوية في التعلم الآلي

لا يمكن لجميع خوارزميات التعلم الآلي التعامل مع البيانات الفئوية، لذلك من المهم للغاية تحويل الميزات الفئوية categorical features لمجموعة البيانات إلى قيم رقمية numeric values. توفر مكتبة scikit-Learn في بايثون العديد من الطرق للتعامل مع البيانات الفئوية. بعض أفضل التقنيات لمعالجة البيانات الفئوية هي:

  • LabelEncoder
  • LabelBinarizer

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

import numpy as np
x = np.random.uniform(0.0, 1.0, size=(10, 2))
y = np.random.choice(("Male", "Female"), size=(10))
print(x[0])
print(y[0])

لذا، كما ترون، لقد أنشأت مجموعة بيانات صغيرة جدًا تتكون من 10 عينات فئوية كذكر Male  وأنثى Female. في القسم أدناه، سأوضح لك كيفية التعامل مع هذه الميزات الفئوية في التعلم الآلي باستخدام LabelEncoder و LabelBinarizer.

LabelEncoder:

تأخذ كلاس LabelEncoder في مكتبة scikit-Learn في بايثون منهجًا موجهًة بالقاموس dictionary-oriented approach لربط كل قيمة فئوية بقيمة عدد صحيح تدريجي. فيما يلي كيفية استخدام LabelEncoder للتعامل مع البيانات الفئوية في التعلم الآلي:

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y1 = le.fit_transform(y)
print(y1)

هذه هي الطريقة التي يمكننا بها استخدام LabelEncoder للتعامل مع الميزات الفئوية، يمكنك أيضًا فك ترميز هذه القيم المحولة إلى التسميات الفئوية الأصلية كما هو موضح أدناه:

output = [1, 0, 1, 0, 1, 0, 0, 1, 1, 1]
output1 = [le.classes_[int(i)] for i in output]
print(output1)

LabelBinarizer:

تعمل طريقة LabelEncoder في كثير من الحالات عند تحويل البيانات الفئوية إلى قيم رقمية. لكن من العيوب أن يتم تحويل جميع التسميات إلى أرقام متسلسلة sequential numbers. لهذا السبب، من الأفضل استخدام ترميز واحد-ساخن one-hot-encoding يقوم بترميز البيانات الفئوية بالثنائي. إليك كيفية استخدام فئة LabelBinarizer في scikit-Learn للتعامل مع البيانات الفئوية:

from sklearn.preprocessing import LabelBinarizer
lb = LabelBinarizer()
y2 = lb.fit_transform(y)
print(y2)

إليك كيفية فك ترميز هذه القيم المحولة transformed values إلى التسميات الفئوية الأصلية:

output2 = lb.inverse_transform(y2)
print(output2)

الملخص

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

بواسطة
thecleverprogrammer
المصدر
Handling Categorical Data in Machine Learning

د. علاء طعيمة

كلية علوم الحاسوب وتكنولوجيا المعلومات / جامعة القادسية / العراق

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى