GridSearchCV 란?
사이킷런에서는 분류 알고리즘이나 회귀 알고리즘에 사용되는 하이퍼파라미터를 순차적으로 입력해 학습을 하고 측정을 하면서 가장 좋은 파라미터를 알려준다. GridSearchCV가 없다면 max_depth 가 3일때 가장 최적의 스코어를 뽑아내는지 1일때 가장 최적인 스코어를 뽑아내는지 일일이 학습을 해야 한다. 하지만 grid 파라미터 안에서 집합을 만들고 적용하면 최적화된 파라미터를 뽑아낼 수 있다.
GridSearchCV 에 대한 사이킷런 정식 안내 문서는 밑에 있다.
scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
GridSearchCV 클래스의 생성자 정리
-estimator : classifier, regressor, pipeline 등 가능
-param_grid : 튜닝을 위해 파라미터, 사용될 파라미터를 dictionary 형태로 만들어서 넣는다.
-scoring : 예측 성능을 측정할 평가 방법을 넣는다. 보통 accuracy 로 지정하여서 정확도로 성능 평가를 한다.
-cv : 교차 검증에서 몇개로 분할되는지 지정한다.
-refit : True가 디폴트로 True로 하면 최적의 하이퍼 파라미터를 찾아서 재학습 시킨다.
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import accuracy_score
iris_data = load_iris()
label = iris_data.target
data = iris_data.data
X_train, X_val, y_train, y_val = train_test_split(data, label, test_size=0.2)
# GridSearchCV의 param_grid 설정
params = {
'max_depth': [2, 3],
'min_samples_split': [2, 3]
}
dtc = DecisionTreeClassifier()
grid_tree = GridSearchCV(dtc, param_grid=params, cv=3, refit=True)
grid_tree.fit(X_train, y_train)
print('best parameters : ', grid_tree.best_params_)
print('best score : ', grid_tree.best_score_)
em = grid_tree.best_estimator_
pred = em.predict(X_val)
accuracy_score(y_val, pred)
'머신러닝' 카테고리의 다른 글
머신러닝 분류 Classification 중 Decision Tree(결정 트리) (0) | 2021.02.24 |
---|---|
GridSearchCV의 Check the list of available parameters with `estimator.get_params().keys()` 에러 발생시 해결법 (0) | 2021.02.24 |
[파이썬 머신러닝]Pipeline 파이프라인 구축하기 (1) | 2021.02.24 |
[파이썬 머신러닝] map으로 레이블 인코딩 하기 (0) | 2021.02.22 |
머신러닝 이진분류의 Evaluation 평가에 대해 알아보자(Accuracy, Precision, Recall, F1_Score, ROC_AUC) (1) | 2021.02.19 |