اذهب إلى المحتوى
  • 0

استخدام ال GridSearchCV في مكتبة Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

 هي أداة نستخدمها لتطبيق العديد من المعاملات العليا hyperparameters على نموذجنا، لتجريبها و اختيار الأفضل منها.
 يتم استخدامها عبر الموديول:

 model_selection.GridSearchCV

خطوات تنفيذها:
1.     استيراد المكتبة.

from sklearn.model_selection import GridSearchCV

2.     استيراد الموديل المطلوب فحصه وإنشاؤه.
3.     عمل قاموس بحيث يكون فيه المفتاح هو اسم الـ parameter  و القيمة هي القيم المطلوب تجريبها له.
4.     تنفيذ GridSearchCV  حيث نمرر له الموديل المطلوب تنفيذه و القاموس الذي يحوي مانريد نتجريبه.
5.     ثم إظهار النتائج عبر عدد من الـ attributes التي سنوردها في المثال (ستكون كل الأمور واضحة جداً) .
حيث يجرب GridSearchCV جميع مجموعات القيم التي تم تمريرها في القاموس ويقيم النموذج لكل مجموعة باستخدام طريقة Cross-Validation. ومن ثم، بعد استخدام هذه الوظيفة ، نحصل على الدقة / الخسارة لكل مجموعة من المعلمات العليا ويمكننا اختيار الأفضل أداءً.
الصيغة:

sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, cv=None, verbose=0, return_train_score=False)

1.estimator: النموذج الذي تريد التحقق من المعلمات العليا الخاصة به.
2.params_grid: كائن القاموس الذي يحتوي على المعلمات العليا التي تريد تجربتها.
3-scoring: مقياس التقييم الذي تريد استخدامه.
4.cv: عدد عمليات التحقق المتبادل التي يجب أن تجربها لكل مجموعة مختارة من المعلمات العليا.
5. overbose: يمكنك ضبطه على 1 للحصول على نسخة مطبوعة مفصلة أثناء ملائمة البيانات لـ GridSearchCV .
6.n_jobs: عدد العمليات التي ترغب في تشغيلها بالتوازي لهذه المهمة إذا كانت -1 ستستخدم جميع المعالجات المتاحة.
الوسيط الأخير إذا كان False، فلن تتضمن السمة cv_results_  ال score للتدريب.
مثال:

from sklearn.svm import SVR
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
import pandas as pd
# تحميل البيانات
BostonData = load_boston()
X = BostonData.data
y = BostonData.target
# تقسيم البيانات
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0, shuffle =True)
#تطبيق  GridSearchCV   
SelectedModel = SVR()
'''
:نحدد الآن في القاموس التالي مايلي
1. المفاتيح التي تمثل المعاملات العليا المطلوب إجراء التجريب عليها 
2.القيم المراد اختبارها من أجل كل مفتاح
لاحظ أننا حددنا للكيرنل قيمتين ليتم تجريبهم وهم 
linear و rbf
:وحددنا للإبسلون القيم التالية
0.1 0.2 0.3
'''
Selected = {'kernel':('linear', 'rbf'), 'epsilon':[0.1,0.2,0.3]}
GridSearchModel = GridSearchCV(SelectedModel,Selected, cv = 2,return_train_score=True)
# للبدأ بالتدريب
GridSearchModel.fit(X_train, y_train)
sorted(GridSearchModel.cv_results_.keys())
GridSearchResults = pd.DataFrame(GridSearchModel.cv_results_)[['mean_test_score', 'std_test_score', 'params' , 'rank_test_score' , 'mean_fit_time']]
# عرض النتائج
print('All Results :', GridSearchResults )
# عرض أفضل نتيجة 
print('Best Score is :', GridSearchModel.best_score_)
# عرض أفضل المعاملات العليا 
print('Best Parameters :', GridSearchModel.best_params_)
#Estimator عرض أفضل 
print('Best Estimator :', GridSearchModel.best_estimator_)
# الخرج
'''
All Results :    mean_test_score  std_test_score                                params  \
0         0.744228        0.009539  {'epsilon': 0.1, 'kernel': 'linear'}   
1         0.234970        0.049682     {'epsilon': 0.1, 'kernel': 'rbf'}   
2         0.743469        0.009218  {'epsilon': 0.2, 'kernel': 'linear'}   
3         0.232345        0.049925     {'epsilon': 0.2, 'kernel': 'rbf'}   
4         0.744154        0.009648  {'epsilon': 0.3, 'kernel': 'linear'}   
5         0.231108        0.053474     {'epsilon': 0.3, 'kernel': 'rbf'}   

   rank_test_score  mean_fit_time  
0                1       0.956472  
1                4       0.001997  
2                3       1.818950  
3                5       0.002998  
4                2       1.063380  
5                6       0.002010  
Best Score is : 0.7442279764447716
Best Parameters : {'epsilon': 0.1, 'kernel': 'linear'}
Best Estimator : SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='scale',
    kernel='linear', max_iter=-1, shrinking=True, tol=0.001, verbose=False)

'''

مثال آخر:

# استيراد المكتبات
import sklearn
from sklearn.svm import SVC 
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split 
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import classification_report, confusion_matrix 
from sklearn.datasets import load_breast_cancer 
# تحميل بياناتك
dataset = load_breast_cancer()
X=dataset.data
Y=dataset.target
# تقسيمها
X_train, X_test, y_train, y_test = train_test_split(X,Y,test_size = 0.2, random_state = 1) 
# تحديد مانريد اختباره
param_grid = {'C': [0.1, 0.7, 8],  
              'gamma': [1, 0.1, 0.01, 0.0001], 
              'gamma':['scale', 'auto'],
              'kernel': ['linear','rbf']}   
#GridSearchCV إنشاء ال 
grid = GridSearchCV(SVC(), param_grid, refit = True,cv=2) 
# بدأ التدريب والتجريب
grid.fit(X_train, y_train) 
# عرض أفضل المعاملات
print(grid.best_params_) 
# توقع القيم 
grid_predictions = grid.predict(X_test) 
#classification_report عرض ال
print(classification_report(y_test, grid_predictions)) 
'''
{'C': 0.1, 'gamma': 'scale', 'kernel': 'linear'}
              precision    recall  f1-score   support

           0       1.00      0.86      0.92        42
           1       0.92      1.00      0.96        72

    accuracy                           0.95       114
   macro avg       0.96      0.93      0.94       114
weighted avg       0.95      0.95      0.95       114


'''

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...