You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/ar/4-Classification/3-Classifiers-2/README.md

13 KiB

مصنفات المأكولات 2

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

اختبار ما قبل المحاضرة

المتطلبات الأساسية

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

التحضير

قمنا بتحميل ملف 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_feature_df, cuisines_label_df, test_size=0.3)
    

مصنف Linear SVC

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

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

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

  1. ابدأ باستخدام Linear SVC:

    C = 10
    # Create different classifiers.
    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 Machine لطرق تعلم الآلة التي تُستخدم لمهام التصنيف والانحدار. تقوم SVMs "برسم أمثلة التدريب كنقاط في الفضاء" لزيادة المسافة بين فئتين. يتم بعد ذلك رسم البيانات اللاحقة في هذا الفضاء بحيث يمكن التنبؤ بفئتها.

تمرين - تطبيق مصنف 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 Classifiers)

دعنا نتبع المسار حتى النهاية، على الرغم من أن الاختبار السابق كان جيدًا جدًا. دعنا نجرب بعض "المصنفات المجمعة"، وتحديدًا 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

تعرف على المزيد حول المصنفات المجمعة

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

  • Random Forest، وهي طريقة تعتمد على المتوسط، تبني "غابة" من "أشجار القرار" مع إضافة العشوائية لتجنب الإفراط في التخصيص. يتم ضبط معامل n_estimators على عدد الأشجار.

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


🚀تحدي

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

اختبار ما بعد المحاضرة

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

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

الواجب

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


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