작성
·
216
0
안녕하세요. 강의 잘 듣고 있습니다 :)
41강 중요도 이해하고 적용하기 7분 20초에서
각 모델들을 학습시키기 위해 alg.fit() 을 적용시키는
부분이 있는데요!
40강에서 교차검증을 통해 KNN 의 예측력을
보여줄 때는 KNN 알고리즘에 fit() 을 적용시키는
부분이 없습니다. 없는데 어떻게 학습을 해서
예측점수를 낸 건가요..? 아래 이미지는 knn 교차검증
한 코드입니다. 41강과 다르게 40강
해당 셀에는 fit() 으로 학습시키는 부분이 없어서
어느 부분에서 knn을 학습데이터로 학습시킨건지
궁금합니다.
답변 부탁드립니다~!
답변 1
1
안녕하세요. 답변도우미입니다.
우선, 40강, 41강이 주요 클러스터링 머신러닝 모델 이해하기1 (KMeans 모델 이해와 테스트) 이 챕터를 말씀하시는 것 맞으시죠? 왜냐하면, 이름으로 챕터가 표시가 되어 있어서요. 아마도 보여주신 코드가 관련 챕터를 이야기하신 것으로 유추해서 이해를 했습니다.
예측 스코어 자체를 내는 것은 cross_val_score() 자체의 기능입니다. 내부에서 fold 를 나눠서, 학습시키고, 예측하여, score를 내주기 때문에 예측 스코어(score) 를 cross_val_score() 로 확인할 수 있습니다.
좀더 정확하게 본다면, fit() 은 전체 데이터를 기반으로, 한번에 모델에 적용합니다. cross_val_score() 는 cv 등 k-fold 옵션과 함께, 데이터를 쪼개서, 각 데이터별로 모델에 적용하고(즉, fit 을 자체적으로 하고), 테스트를 합니다. 그래서 말씀하신대로, 꼭 fit() 후에, cross_val_score() 를 안해도 됩니다.
sklearn 의 다양한 실제 예제들을 보시면, fit() 후에 cross_val_score() 를 하는 경우도 많고, cross_val_score() 만 쓴 경우도 많아서, 어느정도 둘다 많이 사용한다고 보셔도 좋을 것 같습니다. (딱 공식적인 코드가 있는 것은 아니다로 이해하시면 좋을 것 같습니다.) 다만, fit() 으로 전체 데이터를 한번에 모델에 적용하여, 최종 튜닝된 모델을 도출하고, 이를 cross_val_score() 에 넣어서, 쪼개진 데이터로 한번더 fit 시켜서, 예측 스코어를 가지는 방안도 좀더 일반적인 코드가 될 수 있어서, 이 부분도 함께 이야기를 드리려 했습니다.
감사합니다.
답변 감사합니다 :)