ML競馬育成計画

技術ブログ×競馬予測

【Python3】scikit-learnで出力されたDeprecationWarning(cross_validationのimport)への対処

scikit-learnを使って色々動かしていると、以下の警告メッセージが出力されました。 処理自体は動いていたのでしばらく放置していたのですが、流石に気持ち悪いので、原因を調べてみました。

/MYHOME/.pyenv/versions/3.4.3/lib/python3.4/site-packages/sklearn/cross_validation.py:44:
Warning: 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)

恥ずかしながら英語は超苦手なのですが、たぶん意味的にはこんな感じ。

非推奨の警告
このモジュール(cross_validation)は、リファクタリングされたクラスと関数の全てが移されたmodel_selectionが優先されるので、非推奨とされますよー
また、新しいCVイテレータのインタフェースは、このモジュールとは異なることにも注意してくださいねー
このモジュールは0.20で削除されますよー

「今君が使っているcross_validationモジュールは2.0から廃止になるので、新しいインタフェースでimportしてねー」ということらしいです。 importの仕方を以下のように変更したら、警告メッセージは出力されなくなりました。

#from sklearn.cross_validation import cross_val_score
from sklearn.model_selection import cross_val_score

めでたしめでたし。