البرمجة

بحث شبكي بدون تقاطع لتحسين نموذج RandomForestClassifier في Python

في عالم تطوير البرمجيات باستخدام لغة Python، يعد البحث الشبكي (Grid Search) واحدًا من الطرق الشائعة لاختيار أفضل معلمات لنموذج الآلة الخاص بك. وعلى الرغم من أن مكتبة scikit-learn تقدم فئة GridSearchCV المفيدة التي تجمع بين البحث الشبكي والتقييم عبر التقاطع، إلا أن لديك احتياجًا خاصًا: أنت ترغب في إجراء البحث الشبكي بدون التقييم عبر التقاطع واستخدام كل البيانات للتدريب.

لتحقيق هذا الهدف، يمكنك اتباع خطوات بسيطة باستخدام scikit-learn وتخصيص تقييم النموذج باستخدام “oob score” الخاص بك.

أولًا وقبل كل شيء، يمكنك استيراد الطرق اللازمة من مكتبة scikit-learn:

python
from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import ParameterGrid

ثم يمكنك تحديد نموذج RandomForestClassifier ومجموعة من المعلمات التي تريد تجربتها:

python
param_grid = { 'n_estimators': [10, 50, 100], 'max_depth': [None, 10, 20], 'min_samples_split': [2, 5, 10], 'min_samples_leaf': [1, 2, 4] } model = RandomForestClassifier(oob_score=True)

الآن، يمكنك إجراء البحث الشبكي باستخدام كل البيانات دون التقاطع:

python
grid = ParameterGrid(param_grid) best_score = -1 best_params = None for params in grid: model.set_params(**params) model.fit(X, y) # X و y تمثلان بيانات التدريب والتسميات if model.oob_score_ > best_score: best_score = model.oob_score_ best_params = params

في هذا المثال، يتم تحديد متغير best_params الذي يحتفظ بأفضل معلمات تم العثور عليها خلال البحث الشبكي باستخدام oob score.

هذا يلبي جميع النقاط التي طرحتها:

  1. يتم إجراء البحث الشبكي بسهولة.
  2. لا يتم استخدام التقييم عبر التقاطع.
  3. يتم استخدام كل البيانات للتدريب.
  4. يتم استخدام oob score للتقييم.

المزيد من المعلومات

بالطبع، دعونا نستكشف المزيد من التفاصيل حول كل نقطة وكيف يمكن تحسين هذا النهج لتلبية احتياجاتك بشكل أفضل.

1. إجراء البحث الشبكي بسهولة:

في الشيفرة السابقة، تم استخدام ParameterGrid من مكتبة scikit-learn لتوليد جميع التركيبات الممكنة للمعلمات المحددة. يمكنك تكييف param_grid ليشمل المزيد من المعلمات أو تغيير قيمها وفقًا لاحتياجات نموذجك.

2. عدم استخدام التقييم عبر التقاطع:

في هذا السياق، تم تحقيق هذا الهدف عن طريق تجنب استخدام GridSearchCV الذي يفرض التقييم عبر التقاطع. بدلاً من ذلك، قمت بتقييم النموذج باستخدام مقياس “oob score” المدمج في فئة RandomForestClassifier.

3. استخدام كل البيانات للتدريب:

في السياق الحالي، تم استخدام كل البيانات (X و y) لتدريب النموذج. هذا يعكس رغبتك في عدم فصل بيانات التدريب والاختبار.

4. استخدام oob score للتقييم:

قد تكون استخدام “oob score” هو القاعدة المرجعية لتقييم أداء النموذج أثناء البحث الشبكي. يمكنك أيضاً استكشاف معايير أخرى لتقييم النموذج إذا كان لديك اهتمام خاص بمقاييس أخرى.

تحسينات إضافية:

  1. تسجيل النتائج:
    يمكنك إضافة نظام لتسجيل النتائج لمتابعة النماذج التي تم اختبارها وأدائها. ذلك يمكن أن يكون في شكل دفتر يحتوي على معلومات حول المعلمات والنتائج.

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

  3. تحسين النموذج:
    قد تكون هناك طرق لتحسين النموذج أكثر، مثل تجربة مجموعة متنوعة من النماذج أو استخدام معالجة بيانات إضافية.

في النهاية، يهمنا أن تحظى بتجربة فعّالة وفعّالة في تحسين نموذجك، ونأمل أن يكون هذا النهج الشامل قد قدم لك نقطة انطلاق قوية.

شاهد أيضاً
إغلاق
زر الذهاب إلى الأعلى