Skip to content

Latest commit

 

History

History
242 lines (163 loc) · 12.8 KB

File metadata and controls

242 lines (163 loc) · 12.8 KB

مصنّفات المطبخ 2

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

المتطلبات السابقة

نفترض أنك أنهيت الدروس السابقة ولديك مجموعة بيانات مُنظَّفة في مجلد data باسم cleaned_cuisines.csv في جذر مجلد الدروس الأربعة هذا.

التحضير

لقد حمّلنا ملف notebook.ipynb الخاص بك مع مجموعة البيانات المُنظّفة وقسمناها إلى أطر بيانات X و y، جاهزة لعملية بناء النموذج.

خريطة التصنيف

في السابق، تعلّمت عن الخيارات المختلفة التي تملكها عند تصنيف البيانات باستخدام ورقة غش لمايكروسوفت. يقدم Scikit-learn ورقة غش مماثلة، لكنها أكثر تفصيلاً تساعدك على تضييق خيارات مقدّري النموذج (مصطلح آخر للمصنّفات):

خريطة تعلم الآلة من Scikit-learn

تلميح: زر هذه الخريطة على الإنترنت وانقر على المسار لقراءة التوثيق.

الخطة

هذه الخريطة مفيدة جدًا بمجرد أن يكون لديك فهم واضح لبياناتك، حيث يمكنك 'المشي' على مساراتها نحو اتخاذ القرار:

  • لدينا أكثر من 50 عينة
  • نريد التنبؤ بفئة
  • لدينا بيانات معنونة
  • لدينا أقل من 100 ألف عينة
  • ✨ يمكننا اختيار Linear SVC
  • إذا لم ينجح ذلك، ولأن لدينا بيانات رقمية
    • يمكننا تجربة ✨ KNeighbors Classifier
      • إذا لم ينجح، جرب ✨ SVC و ✨ Ensemble Classifiers

هذا مسار مفيد جدًا للاتباع.

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

باتباع هذا المسار، يجب أن نبدأ باستيراد بعض المكتبات للاستخدام.

  1. استورد المكتبات المطلوبة:

    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.linear_model import LogisticRegression
    from sklearn.svm import SVC
    from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
    from sklearn.model_selection import train_test_split, cross_val_score
    from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve
    import numpy as np
  2. قم بتقسيم بيانات التدريب والاختبار:

    X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)

مصنّف Linear SVC

التجميع بواسطة آلة المتجهات الداعمة (SVC) هو فرع من عائلة تقنيات آلات المتجهات الداعمة في تعلم الآلة (تعرف على المزيد عن هذه أدناه). في هذه الطريقة، يمكنك اختيار 'نواة' لتحديد كيفية تجميع الفئات. يشير معامل 'C' إلى 'التنظيم' الذي ينظّم التأثير المحتمل للمعاملات. يمكن أن تكون النواة واحدة من عدة؛ هنا نحددها على 'linear' لضمان الاستفادة من Linear SVC. الافتراضي للاحتمالية هو 'false'؛ هنا نحددها على 'true' لجمع تقديرات الاحتمالية. نحدد الحالة العشوائية على '0' لخلط البيانات للحصول على الاحتمالات.

تمرين - تطبيق Linear SVC

ابدأ بإنشاء مصفوفة من المصنّفات. ستضيف تدريجيًا إلى هذه المصفوفة أثناء الاختبار.

  1. ابدأ بـ Linear SVC:

    C = 10
    # إنشاء مصنفات مختلفة.
    classifiers = {
        'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
    }
  2. قم بتدريب نموذجك باستخدام Linear SVC واطبع تقريرًا:

    n_classifiers = len(classifiers)
    
    for index, (name, classifier) in enumerate(classifiers.items()):
        classifier.fit(X_train, np.ravel(y_train))
    
        y_pred = classifier.predict(X_test)
        accuracy = accuracy_score(y_test, y_pred)
        print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100))
        print(classification_report(y_test,y_pred))

    النتيجة جيدة جدًا:

    Accuracy (train) for Linear SVC: 78.6% 
                  precision    recall  f1-score   support
    
         chinese       0.71      0.67      0.69       242
          indian       0.88      0.86      0.87       234
        japanese       0.79      0.74      0.76       254
          korean       0.85      0.81      0.83       242
            thai       0.71      0.86      0.78       227
    
        accuracy                           0.79      1199
       macro avg       0.79      0.79      0.79      1199
    weighted avg       0.79      0.79      0.79      1199
    

مصنّف K-Neighbors

K-Neighbors هو جزء من عائلة "الجيران" في طرق تعلم الآلة، والتي يمكن استخدامها في التعلم المُوجَّه وغير المُوجَّه. في هذه الطريقة، يتم إنشاء عدد محدد مسبقًا من النقاط ويتم تجميع البيانات حول هذه النقاط بحيث يمكن التنبؤ بتسميات معممة للبيانات.

تمرين - تطبيق مصنّف K-Neighbors

كان المصنّف السابق جيدًا، وعمل بشكل جيد مع البيانات، لكن ربما يمكننا الحصول على دقة أفضل. جرب مصنّف K-Neighbors.

  1. أضف سطرًا إلى مصفوفة المصنّفات الخاصة بك (أضف فاصلة بعد عنصر Linear SVC):

    'KNN classifier': KNeighborsClassifier(C),

    النتيجة أسوأ قليلًا:

    Accuracy (train) for KNN classifier: 73.8% 
                  precision    recall  f1-score   support
    
         chinese       0.64      0.67      0.66       242
          indian       0.86      0.78      0.82       234
        japanese       0.66      0.83      0.74       254
          korean       0.94      0.58      0.72       242
            thai       0.71      0.82      0.76       227
    
        accuracy                           0.74      1199
       macro avg       0.76      0.74      0.74      1199
    weighted avg       0.76      0.74      0.74      1199
    

    ✅ تعرف على K-Neighbors

مصنّف Support Vector

مصنّفات المتجهات الداعمة هي جزء من عائلة آلات المتجهات الداعمة في طرق تعلم الآلة التي تُستخدم لمهام التصنيف والانحدار. تقوم آلات الدعم "بتمثيل أمثلة التدريب كنقاط في الفضاء" لزيادة المسافة بين فئتين. تُرسم البيانات اللاحقة في هذا الفضاء ليتم التنبؤ بفئتها.

تمرين - تطبيق مصنّف Support Vector

دعونا نحاول تحسين الدقة باستخدام مصنّف Support Vector.

  1. أضف فاصلة بعد عنصر K-Neighbors، ثم أضف هذا السطر:

    'SVC': SVC(),

    النتيجة جيدة جدًا!

    Accuracy (train) for SVC: 83.2% 
                  precision    recall  f1-score   support
    
         chinese       0.79      0.74      0.76       242
          indian       0.88      0.90      0.89       234
        japanese       0.87      0.81      0.84       254
          korean       0.91      0.82      0.86       242
            thai       0.74      0.90      0.81       227
    
        accuracy                           0.83      1199
       macro avg       0.84      0.83      0.83      1199
    weighted avg       0.84      0.83      0.83      1199
    

    ✅ تعرف على Support-Vectors

مصنّفات التجميع (Ensemble)

لننتقل في المسار حتى النهاية، بالرغم من أن الاختبار السابق كان جيدًا جدًا. دعونا نجرب بعض "مصنّفات التجميع"، تحديدًا Random Forest و AdaBoost:

  'RFST': RandomForestClassifier(n_estimators=100),
  'ADA': AdaBoostClassifier(n_estimators=100)

النتيجة جيدة جدًا، خصوصًا مع Random Forest:

Accuracy (train) for RFST: 84.5% 
              precision    recall  f1-score   support

     chinese       0.80      0.77      0.78       242
      indian       0.89      0.92      0.90       234
    japanese       0.86      0.84      0.85       254
      korean       0.88      0.83      0.85       242
        thai       0.80      0.87      0.83       227

    accuracy                           0.84      1199
   macro avg       0.85      0.85      0.84      1199
weighted avg       0.85      0.84      0.84      1199

Accuracy (train) for ADA: 72.4% 
              precision    recall  f1-score   support

     chinese       0.64      0.49      0.56       242
      indian       0.91      0.83      0.87       234
    japanese       0.68      0.69      0.69       254
      korean       0.73      0.79      0.76       242
        thai       0.67      0.83      0.74       227

    accuracy                           0.72      1199
   macro avg       0.73      0.73      0.72      1199
weighted avg       0.73      0.72      0.72      1199

✅ تعرف على مصنّفات التجميع

تجمع هذه الطريقة في تعلم الآلة "تنبؤات عدة مقدّرين أساسيين" لتحسين جودة النموذج. في مثالنا، استخدمنا أشجار عشوائية و AdaBoost.

  • Random Forest، طريقة التجميع، تبني 'غابة' من 'أشجار القرار' محقونة بالعشوائية لتجنب الإفراط في التكيّف. يتم ضبط معامل n_estimators على عدد الأشجار.

  • AdaBoost يركب مصنّفًا على مجموعة بيانات ثم يركب نسخًا من ذلك المصنّف على ذات البيانات. يركز على أوزان العناصر التي تم تصنيفها بشكل خاطئ ويضبط التركيب للمصنّف التالي لتصحيحها.


🚀التحدي

كل من هذه التقنيات لديها عدد كبير من المعاملات التي يمكنك تعديلها. ابحث عن المعاملات الافتراضية لكل منها وفكر فيما يعنيه تعديل هذه المعاملات لجودة النموذج.

مراجعة ودراسة ذاتية

هناك الكثير من المصطلحات المتخصصة في هذه الدروس، فخذ دقيقة لمراجعة هذه القائمة للمصطلحات المفيدة!

الواجب

لعب بالمعاملات


إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يُرجى العلم بأن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. ينبغي اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر الموثوق والمرجعي. للمعلومات الحيوية، يُنصح باستخدام الترجمة المهنية من قبل مترجمين بشريين. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.