티스토리 뷰

 보통 자기가 만든 모델이 맞는지 틀린지를 확인할 때는 cross validation이란 방법을 사용한다. Cross Validation이란 간단히 말해 자신이 가지고 있는 Dataset 내에서 Train Set과 Test Set으로 나눠서 학습시키는 방법이다. python으로 이 방법을 하려면 간단하게 scikit-learn library(sklearn)의 cross_validation module내의 train_test_split이라는 함수를 가져다 쓰면 된다. 실제 사용 방법은 다음과 같다.

그런데 언제부터인가 train_test_split을 사용하게 되면 IPython console 창으로 다음과 같은 경고창이 뜨는 것을 확인할 수 있다.

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.

  "This module will be removed in 0.20.", DeprecationWarning)

 Warning이라고 떠서 심각한 오류라고 생각할수도 있고, 혹은 warning이기에 그냥 무시할 사람도 있을텐데, 이 경고는 Competibility와 연관이 있기 때문에 무시하고 넘어가면 안된다. 

 사실 위의 경고는 sklearn 0.20 버전부터는 cross_validation module이 없어지기 때문에 이를 대체할 model_selection module을 사용하라는 내용이다. 만약 test하는 local 환경이 sklearn 0.18을 쓰고 있다면 이 model_selection module과 cross_validation module이 공존하기 때문에 동시에 사용해도 되겠지만 다른 데에서 test하려고 하는데 해당 환경에서 sklearn 0.20을 사용한다면 문제가 발생할 것이다. 그러니 해당 코드도 바꿔주는 것이 좋다. 다행인 것은 cross_validation.train_test_split()이나 model_selection.train_test_split()이나 사용 방법이나 인자의 의미가 동일하다는 것이다. 이처럼 외부 library에 의존해서 코드를 작성할 경우, IPython Console을 통해 나오는 Warning message도 유심히 살펴봐야 한다.

댓글