반응형
검증 데이터 세트
- 기존엔 단순히 학습 데이터 세트와 테스트 데이터 세트로 데이터를 나눴다.
- 만약 매개변수를 조정하기 위해 테스트 세트를 사용하면 추후 모델 평가에 테스트 세트를 더 이상 사용할 수 없다.
- 즉, 평가를 위해 모델을 만들 때 사용하지 않은 독립된 데이터셋이 필요하다.
- 데이터를 세 개의 세트로 나눠 이 문제를 해결
- 학습 데이터 세트 : 모델을 작성
- 검증 데이터 세트 : 모델의 매개변수 선택
- 테스트 데이터 세트 : 모델의 성능 평가
그리드서치
- 사용자가 관심있는 매개변수 전체를 대상으로 가능한 모든 조합을 시도해보는 것이다.
# 매개변수 그리드
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100],
'gamma': [0.001, 0.01, 0.1, 1, 10, 100] }
- SVC의 주요 파라미터인 'C'값과 'gamma'값을 딕셔너리의 형태도 저장한다.
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
# GridSearchCV
model = SVC()
grid_search = GridSearchCV(model, param_grid, cv=5, return_train_score=True)
# train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris.data,
iris.target,
random_state=0)
# grid_search.fit
grid_search.fit(X_train, y_train)
- GridSearchCV 객체에서 fit() 매소드를 시행하면 최적의 매개변수를 찾아줄 뿐만 아니라 교차 검증 성능이 가장 좋은 매개변수로 전체 훈련 데이터 세트에 대해 새로운 모델을 자동을 만든다.
- GridSearchCV는 이러한 전체 데이터로 학습한 모델에 접근할 수 있도록 predict()와 score() 메소드를 제공한다.
- cv : 교차검증 분할 수
- return_train_score : train_score 리턴여부
# 테스트 세트 점수
test_score = grid_search.score(X_test, y_test)
print("테스트 세트 점수: {:.2f}".format( test_score ))
print("최적 매개변수: {}".format(grid_search.best_params_))
print("최고 교차 검증 점수: {:.2f}".format(grid_search.best_score_))
==결과==
테스트 세트 점수: 0.97
최적 매개변수: {'C': 10, 'gamma': 0.1}
최고 교차 검증 점수: 0.97
- 그리드 서치의 결과
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
[scikit-learn 라이브러리] 특성 자동 선택 (0) | 2020.09.01 |
---|---|
[scikit-learn 라이브러리] 오차행렬 (0) | 2020.09.01 |
Pandas 데이터프레임 출력양 조절 (0) | 2020.08.24 |
[scikit-learn 라이브러리] 교차 검증 (0) | 2020.08.23 |
[scikit-learn 라이브러리] SVC (SVM) (0) | 2020.08.23 |