في درس التصنيف الثاني هذا، ستستكشف المزيد من الطرق لتصنيف البيانات الرقمية. ستتعرف أيضًا على التداعيات لاختيار مصنّف واحد على حساب الآخر.
نفترض أنك أنهيت الدروس السابقة ولديك مجموعة بيانات مُنظَّفة في مجلد data باسم cleaned_cuisines.csv في جذر مجلد الدروس الأربعة هذا.
لقد حمّلنا ملف notebook.ipynb الخاص بك مع مجموعة البيانات المُنظّفة وقسمناها إلى أطر بيانات X و y، جاهزة لعملية بناء النموذج.
في السابق، تعلّمت عن الخيارات المختلفة التي تملكها عند تصنيف البيانات باستخدام ورقة غش لمايكروسوفت. يقدم Scikit-learn ورقة غش مماثلة، لكنها أكثر تفصيلاً تساعدك على تضييق خيارات مقدّري النموذج (مصطلح آخر للمصنّفات):
تلميح: زر هذه الخريطة على الإنترنت وانقر على المسار لقراءة التوثيق.
هذه الخريطة مفيدة جدًا بمجرد أن يكون لديك فهم واضح لبياناتك، حيث يمكنك 'المشي' على مساراتها نحو اتخاذ القرار:
- لدينا أكثر من 50 عينة
- نريد التنبؤ بفئة
- لدينا بيانات معنونة
- لدينا أقل من 100 ألف عينة
- ✨ يمكننا اختيار Linear SVC
- إذا لم ينجح ذلك، ولأن لدينا بيانات رقمية
- يمكننا تجربة ✨ KNeighbors Classifier
- إذا لم ينجح، جرب ✨ SVC و ✨ Ensemble Classifiers
- يمكننا تجربة ✨ KNeighbors Classifier
هذا مسار مفيد جدًا للاتباع.
باتباع هذا المسار، يجب أن نبدأ باستيراد بعض المكتبات للاستخدام.
-
استورد المكتبات المطلوبة:
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
-
قم بتقسيم بيانات التدريب والاختبار:
X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)
التجميع بواسطة آلة المتجهات الداعمة (SVC) هو فرع من عائلة تقنيات آلات المتجهات الداعمة في تعلم الآلة (تعرف على المزيد عن هذه أدناه). في هذه الطريقة، يمكنك اختيار 'نواة' لتحديد كيفية تجميع الفئات. يشير معامل 'C' إلى 'التنظيم' الذي ينظّم التأثير المحتمل للمعاملات. يمكن أن تكون النواة واحدة من عدة؛ هنا نحددها على 'linear' لضمان الاستفادة من Linear SVC. الافتراضي للاحتمالية هو 'false'؛ هنا نحددها على 'true' لجمع تقديرات الاحتمالية. نحدد الحالة العشوائية على '0' لخلط البيانات للحصول على الاحتمالات.
ابدأ بإنشاء مصفوفة من المصنّفات. ستضيف تدريجيًا إلى هذه المصفوفة أثناء الاختبار.
-
ابدأ بـ Linear SVC:
C = 10 # إنشاء مصنفات مختلفة. classifiers = { 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) }
-
قم بتدريب نموذجك باستخدام 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.
-
أضف سطرًا إلى مصفوفة المصنّفات الخاصة بك (أضف فاصلة بعد عنصر 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.
-
أضف فاصلة بعد عنصر 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
لننتقل في المسار حتى النهاية، بالرغم من أن الاختبار السابق كان جيدًا جدًا. دعونا نجرب بعض "مصنّفات التجميع"، تحديدًا 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. بينما نسعى لتحقيق الدقة، يُرجى العلم بأن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. ينبغي اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر الموثوق والمرجعي. للمعلومات الحيوية، يُنصح باستخدام الترجمة المهنية من قبل مترجمين بشريين. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
