작성
·
595
·
수정됨
0
안녕하세요! 강의 너무 재밌게 잘 보고 있습니다! k-fold 교차검증 부분 듣다가 스크린샷 코드에 궁금한 점이 있어서 질문드립니다!
스크린샷 처럼 StratifiedKFold.split() 을 이용해서 데이터를 나누고 for문으로 직접 K-fold 방식을 수행할 때, dt_clf 모델이 for문의 이전 iteration에 수행한 학습을 누적해서 학습을 하는거 같은데 이렇게 하는게 맞는 것인지 궁금합니다.
제 생각엔 0번 iter 수행 후 dt_clf 값 초기화, 1번 iter 수행 후 dt_clf 값 초기화, ... 4번까지. 이렇게 수행되어야 한 K-fold 수행 내에서 "학습에 사용한 데이터로 validation" 하는 것을 방지할 수 있을 것 같습니다. 물론 같은 데이터로 여러 epoch을 수행하면 어차피 학습한 데이터가 누적해서 validation으로 사용될 것 같기도 한데... 어떤거 맞는 방법인지 실제 코드는 어떻게 수행되는지 설명 부탁 드립니다.
또한, 아래에 나오는 cross_val_score() 함수, GridSearchCV() 함수 에서는 어떻게 수행하는지 알려주시면 감사하겠습니다.
좋은 강의 감사합니다!
답변 1
1
안녕하십니까,
재미있게 보고 계시다니 저도 기쁘군요 ^^
네, 맞습니다. k fold 수행 시 마다 학습 모델은 초기화 되어야 합니다.
학습 모델은 dt_clf.fit(X_train, y_train) 을 수행 될 때마다 새로운 학습 데이터로 모델이 초기화 됩니다.
이는 cross_val_score()나 GridSearchCV 모두 마찬가지 입니다.
감사합니다.