|
|
6 months ago | |
|---|---|---|
| .. | ||
| solution | 6 months ago | |
| README.md | 6 months ago | |
| assignment.md | 6 months ago | |
| notebook.ipynb | 6 months ago | |
README.md
مصنفات المأكولات 2
في درس التصنيف الثاني هذا، ستستكشف المزيد من الطرق لتصنيف البيانات الرقمية. ستتعلم أيضًا العواقب المترتبة على اختيار مصنف معين بدلاً من الآخر.
اختبار ما قبل المحاضرة
المتطلبات الأساسية
نفترض أنك قد أكملت الدروس السابقة ولديك مجموعة بيانات نظيفة في مجلد data باسم cleaned_cuisines.csv في جذر هذا المجلد المكون من 4 دروس.
التحضير
قمنا بتحميل ملف notebook.ipynb الخاص بك مع مجموعة البيانات النظيفة وقمنا بتقسيمها إلى إطاري بيانات X و y، جاهزة لعملية بناء النموذج.
خريطة التصنيف
في السابق، تعلمت عن الخيارات المختلفة المتاحة لتصنيف البيانات باستخدام ورقة الغش الخاصة بـ Microsoft. تقدم مكتبة 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_feature_df, cuisines_label_df, test_size=0.3)
مصنف Linear SVC
التجميع باستخدام Support-Vector (SVC) هو جزء من عائلة تقنيات تعلم الآلة Support-Vector Machines (تعرف على المزيد عنها أدناه). في هذه الطريقة، يمكنك اختيار "kernel" لتحديد كيفية تجميع العلامات. يشير المعامل 'C' إلى "التنظيم" الذي ينظم تأثير المعاملات. يمكن أن يكون kernel واحدًا من عدة خيارات؛ هنا نضبطه على 'linear' لضمان استخدام Linear SVC. يتم ضبط الاحتمالية افتراضيًا على 'false'؛ هنا نضبطها على 'true' للحصول على تقديرات الاحتمالية. نضبط الحالة العشوائية على '0' لخلط البيانات للحصول على الاحتمالات.
تمرين - تطبيق Linear SVC
ابدأ بإنشاء مصفوفة من المصنفات. ستضيف تدريجيًا إلى هذه المصفوفة أثناء الاختبار.
-
ابدأ بـ Linear SVC:
C = 10 # Create different classifiers. 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 هو جزء من عائلة طرق تعلم الآلة "الجيران"، والتي يمكن استخدامها للتعلم الموجه وغير الموجه. في هذه الطريقة، يتم إنشاء عدد محدد مسبقًا من النقاط ويتم جمع البيانات حول هذه النقاط بحيث يمكن التنبؤ بالعلامات العامة للبيانات.
تمرين - تطبيق مصنف 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
مصنفات Support-Vector هي جزء من عائلة Support-Vector Machine من طرق تعلم الآلة التي تُستخدم لمهام التصنيف والانحدار. تقوم SVMs "برسم أمثلة التدريب كنقاط في الفضاء" لزيادة المسافة بين فئتين. يتم رسم البيانات اللاحقة في هذا الفضاء بحيث يمكن التنبؤ بفئتها.
تمرين - تطبيق مصنف Support Vector
دعنا نحاول الحصول على دقة أفضل قليلاً باستخدام مصنف 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
✅ تعرف على المصنفات التجميعية
هذه الطريقة في تعلم الآلة "تجمع توقعات عدة مصنفات أساسية" لتحسين جودة النموذج. في مثالنا، استخدمنا Random Trees و AdaBoost.
-
Random Forest، وهي طريقة تعتمد على المتوسط، تبني "غابة" من "أشجار القرار" مع إضافة عشوائية لتجنب الإفراط في التخصيص. يتم ضبط معامل n_estimators على عدد الأشجار.
-
AdaBoost يقوم بتطبيق مصنف على مجموعة البيانات ثم تطبيق نسخ من هذا المصنف على نفس مجموعة البيانات. يركز على أوزان العناصر التي تم تصنيفها بشكل غير صحيح ويعدل التخصيص للمصنف التالي لتصحيحها.
🚀التحدي
كل واحدة من هذه التقنيات لديها عدد كبير من المعاملات التي يمكنك تعديلها. قم بالبحث عن المعاملات الافتراضية لكل تقنية وفكر في ما يعنيه تعديل هذه المعاملات لجودة النموذج.
اختبار ما بعد المحاضرة
المراجعة والدراسة الذاتية
هناك الكثير من المصطلحات في هذه الدروس، لذا خذ دقيقة لمراجعة هذه القائمة من المصطلحات المفيدة!
الواجب
إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
