Python에서의 하이퍼파라미터 튜닝
Alex Scriven
Data Scientist
GridSearchCV 객체 소개:
sklearn.model_selection.GridSearchCV(
estimator,
param_grid, scoring=None, fit_params=None,
n_jobs=None, refit=True, cv='warn',
verbose=0, pre_dispatch='2*n_jobs',
error_score='raise-deprecating',
return_train_score='warn')
그리드 서치 단계:
주요 입력:
estimatorparam_gridcvscoringrefitn_jobsreturn_train_score
estimator 입력:
기억하세요:
param_grid 입력:
목록 대신:
max_depth_list = [2, 4, 6, 8]
min_samples_leaf_list = [1, 2, 4, 6]
다음처럼 작성합니다:
param_grid = {'max_depth': [2, 4, 6, 8],
'min_samples_leaf': [1, 2, 4, 6]}
param_grid 입력:
기억하세요: param_grid 딕셔너리의 키는 유효한 하이퍼파라미터여야 합니다.
예: 로지스틱 회귀 추정기에서
# Incorrect
param_grid = {'C': [0.1,0.2,0.5],
'best_choice': [10,20,50]}
ValueError: Invalid parameter best_choice for estimator LogisticRegression
cv 입력:

scoring 입력:
metrics 모듈을 사용합니다내장 스코어링 목록 확인:
from sklearn import metrics
sorted(metrics.SCORERS.keys())
refit 입력:
GridSearchCV 객체를 추정기처럼(예측용) 사용할 수 있게 합니다n_jobs 입력:
유용한 코드:
import os
print(os.cpu_count())
다른 작업도 하려면 모든 코어 사용에 주의하세요!
return_train_score 입력:
직접 GridSearchCV 객체 만들기:
# Create the grid param_grid = {'max_depth': [2, 4, 6, 8], 'min_samples_leaf': [1, 2, 4, 6]}#Get a base classifier with some set parameters. rf_class = RandomForestClassifier(criterion='entropy', max_features='auto')
모든 요소 결합:
grid_rf_class = GridSearchCV(
estimator = rf_class,
param_grid = parameter_grid,
scoring='accuracy',
n_jobs=4,
cv = 10,
refit=True,
return_train_score=True)
refit을 True로 설정했으므로 객체를 바로 사용할 수 있습니다:
#Fit the object to our data
grid_rf_class.fit(X_train, y_train)
# Make predictions
grid_rf_class.predict(X_test)
Python에서의 하이퍼파라미터 튜닝