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

ترميز البيانات الفئوية في مهام التصنيف المتعدد باستخدام التابع to_categorical في مكتبة Keras

Meezo ML

السؤال

Recommended Posts

  • 2

يمكنك استخدامها عبر الموديول:

keras.utils.np_utils

يقوم التابع  to_categorical بتحويل البيانات العددية إلى بيانات فئوية ممثلة بأصفار و واحدات ، حيث يقوم بترميز كل قيمة عددية مميزة  (ال class) في شعاع طوله بعدد الفئات Classes المختلفة الموجودة في بياناتنا.
وبشكل أكثر وضوح:
بعد أن يتم إعطاء كل class في مجموعة البيانات  رقمً تعريف فريد Classid  يتراوح بين 1 و | Classes | .
حيث Classes هي مجموعة الفئات (الأصناف) الموجودة لدينا . ثم يتم تمثيل كل فئة  عبر متجه بأبعاد مقدارها | Classes | مملوء كلها بـ صفر باستثناء الفهرس ، حيث index = Classid. حيث نضع في هذا الفهرس ببساطة 1. 
ونستخدمه عادة عندما يكون لدينا مهمة تصنيف متعدد (عندما يكون لدينا عدة فئات).
في المثال التالي لدي شعاع y فيه 3 كلاسات مختلفة وبالتالي كل كلاس سوف يتم تمثيله بشعاع له 3 أبعاد.

# استيراد التابع
from keras.utils.np_utils import to_categorical
# خرج مزيف
y=[0,1,0,2,1,0,1,2,0,1,2] 
# استخدام المحول الفئوي
y=to_categorical(y)
#طباعة النتائج 
print(y)
'''
array([[1., 0., 0.],
       [0., 1., 0.],
       [1., 0., 0.],
       [0., 0., 1.],
       [0., 1., 0.],
       [1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.],
       [1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]], dtype=float32)
'''

سأقوم بتطبيق هذا التابع لترميز مجموعة بيانات routers، حيث أن هذه البيانات لديها 46 فئة (صنف) مختلف:

# تحميل الداتا
from keras.datasets import reuters
(train_data, train_labels), (test_data, test_labels) = reuters.load_data(
num_words=100)
# ترميز الفئات المختلفة للبيانات
from keras.utils.np_utils import to_categorical  # One-Hot-Enoding
one_hot_train_labels = to_categorical(train_labels)
one_hot_test_labels = to_categorical(test_labels)
# قمنا بعرض فئة أول عينة من بيانات التدريب
print('one_hot_train_labels[0]:\n',one_hot_train_labels[0])
'''
one_hot_train_labels[0]:
 [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
'''
# قمنا بعرض فئة أول عينة من بيانات الاختبار
print('one_hot_test_labels[0]:\n',one_hot_test_labels[0])
'''
one_hot_test_labels[0]:
 [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
'''

ملاحظة: هذا الترميز هو نفسه ال One-Hot-Encoding

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...