• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

best_score_값과 pred값이 다른 이유

20.12.17 21:46 작성 조회수 462

2

안녕하세요, 구글코랩에서 GridsearchCV를 실행하다가 궁금한 점이 생겨 질문합니다.

grid_dtree.best_score_ 를 출력하면 정확도가0.975가 나오고 pred=grid_dtree.predict(X_test)에서 pred를 출력하면 0.9667이 나옵니다.

refit=True옵션이 최고성능을 내는 파라미터로 재학습하는 것이니 grid_dtree를 테스트 데이터셋으로 학습 및 예측한 pred와 best_score_ 속성 값은 동일해야 하는 것 아닌지 궁금합니다.

두 값이 다른 이유는 K폴드를 실행하는 과정에서 학습데이터셋과 테스트데이터셋의 구간이 강의에서 나온 구간과는 약간 상이해서 그런듯합니다. 이것도 맞는지 알려주시면 감사하겠습니다!

답변 6

·

답변을 작성해보세요.

3

소스코드에서 X_train, X_test, y_train, y_test= train_test_split(..., test_size=0.2)로  학습 데이터 세트(80%)와 테스트 데이트 세트(20%)가 분리되었습니다.

 grid_dtree = GridSearch(... cv=3)

 grid_dtree.fit(X_train, y_train)으로 학습 데이터 세트가 입력되면  GridSearchCV는 주어진 X_train, y_train으로 3개 Fold로 다시 학습/Valid 를 나눕니다. 즉 iris 데이터의 80%인 X_train을 다시 분할해서 학습(X_train의 2/3)과 Valid(X_train의 1/3)으로 나누면서 cross validation으로 학습과 검증을 수행하게 됩니다. 즉 X_train을 쪼개면서 학습하고 predict()한 최고 정확도를 grid_dtree.best_score_ 가 가지는 것입니다.

하지만 이는 테스트 데이터 X_test로 predict() 된게 아닙니다. 그렇기 때문에 X_test 로 predict()된 결과와 다릅니다.

0

아하 정말 감사합니다! 이해됐습니다ㅎㅎ

0

강사님, iris데이터셋의 평균값하고 분산값을 구해보았는데 책이랑 미세하게 다른걸 보니 구글코랩의 iris 데이터셋이 약간 다른것 같습니다..! 이 부분이 best_score_값과 pred값이 다른 이유에 영향을 미칠 수도 있는건가요?

0

이처럼 정확도가 다르게 나오는데 이유를 잘못찾겠습니다.

0

X_test를 validation으로 사용하는건 어떻게 하는지 정확히 잘모르겠어서 설명해주시면 감사하겠습니다!ㅜㅜ 소스코드 따라한 사진 첨부하겠습니다!

0

안녕하십니까,

grid_dtree.bet_score_는 validation 데이터 세트로 평가한 결과 입니다. 만일 validation 데이터 세트가 X_test 였다면 두개의 결과는 동일해야 할것입니다.

하지만 일반적으로는 Stratified K Fold로 되어 있으니, X_test를 validation으로 사용하지 않으셨을 것으라고 생각됩니다. 그래서 결과가 다를 것 같습니다. 만약 아니라면 다시 답변 부탁드립니다.(전체 소스 코드와 함께 부탁드립니다)

감사합니다.