[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

[scikit-learn 라이브러리] 그리드서치

inu 2020. 9. 1. 12:27
반응형

검증 데이터 세트

  • 기존엔 단순히 학습 데이터 세트와 테스트 데이터 세트로 데이터를 나눴다.
  • 만약 매개변수를 조정하기 위해 테스트 세트를 사용하면 추후 모델 평가에 테스트 세트를 더 이상 사용할 수 없다.
  • 즉, 평가를 위해 모델을 만들 때 사용하지 않은 독립된 데이터셋이 필요하다.
  • 데이터를 세 개의 세트로 나눠 이 문제를 해결
  • 학습 데이터 세트 : 모델을 작성
  • 검증 데이터 세트 : 모델의 매개변수 선택
  • 테스트 데이터 세트 : 모델의 성능 평가

그리드서치

  • 사용자가 관심있는 매개변수 전체를 대상으로 가능한 모든 조합을 시도해보는 것이다.
# 매개변수 그리드
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
  • 그리드 서치의 결과
반응형