작성
·
207
0
답변 1
0
안녕하세요. 이게 사실 어떤 정형화된 룰이 없고, sklearn 도 수시로 변경되고 하면서, 둘다 가능하다 정도로 생각하시면 좋을 것 같아요. 실제로 캐글의 다양한 코드를 보시면, 둘 다의 코드들을 보실 수 있으실꺼예요.
좀더 정확하게 본다면, fit() 은 전체 데이터를 기반으로, 한번에 모델에 적용합니다. cross_val_score() 는 cv 등 k-fold 옵션과 함께, 데이터를 쪼개서, 각 데이터별로 모델에 적용하고(즉, fit 을 자체적으로 하고), 테스트를 합니다.
그래서, 기본적으로는 cross_val_score() 에 생짜 모델을 넣고, 데이터를 쪼개서, 모델에 적용해서, 다양한 데이터에 대한 평균 값을 확인한 후, 최종 결과를 낼 때는 튜닝된 모델을 기반으로, fit() 만으로 전체 데이터를 한번에 적용하는 경우도 많습니다.
그런데, fit() 으로 전체 데이터를 한번에 모델에 적용한 후에, 이를 cross_val_score() 에 넣어서, 쪼개진 데이터로 한번더 fit 시켜서, 테스트를 하기도 합니다. 큰 차이가 없거나, 아예 차이가 없는 경우라서, 기본적으로는 전자가 좀더 많이 쓰지만, 후자로 써도 문제 없다고 생각해주시면 괜찮을 것 같습니다.