ちょっとだけFlavor〜IrisData編〜
豆板醤もよく使いますよ(笑)
お試ししてみる
たまに、お試しをしたくなることがあって。今回は、Scikit-LearnでRandom Forestをやろう、と。使用Dataは(有名な)Irisを用いてやってみます。いろいろとはまるわけです。(笑)
Anaconda
「データサイエンス・機械学習向けのPython+RのDistribution」とあります。確かに、いつものように、Google先生でも、Anacondaというのがよくでてくるなぁ、と。pipじゃダメなの?というよりも、「RedHat系のOS Installer」の名称じゃないの?っていうのが、まずよぎります。個人的に、いつも混乱をきたすのです。(笑)
Anacondaは特化型(カプールみたいなもの)だけど、VirtualEnvだと汎用型(ザクです)なので、後者を選択。
各種Version on VirtualEnv
- Python 3.6.6
- Numpy 1.15.1
- Pandas 0.23.4
- Scikit-Learn 0.19.2
VirtualEnv上に、pipでInstallしたものです。こちらも個人的には、自家製はv3ベースのみになったので、venvでもいいのだけど、諸々v2じゃないとダメなこともありそうなので、VirtualEnvを使ってるという感じです。
DeprecationWarning
from sklearn.ensemble import RandomForestClassifier
sklearn.ensembleをimportすると、
DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and
should not be imported. It will be removed in a future NumPy release.
from numpy.core.umath_tests import inner1d
という警告がでます。Errorじゃないので、動かくなくはないのだけど、モヤっとします。
StackOverflow先生に聞いてみたりしますと、Numpyとscikit-learnのversionが問題で、scikit-learnを0.20rc1にすれば、解決するよ、という回答をいただいたりします。その過程で、conda(Anacondaのパッケージ管理用コマンド)で、こうすれば、入りまっせ!という話なのですが、VirtualEnv+pipな環境からすると、いつか破綻をするかもしれない、という感じがしないでもないので、そうでない方法で回避を目指してみます。(至極、個人的な感想です。なにかを動かすために、無理矢理あれこれやったら、その後、別の状況で、おかしなことが発生するという確率論的なお話ですけどね。)
warning制御module
警告を制御するmoduleが存在しますので、これを利用します。にしても、あちこちに、こういったmodule間問題がありそうで、その結果回避としてのmoduleなんだろうけど、なんとなく、自分で自分のカゲを踏んでいるって感じがしないでもないですが。
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
これをWarningを出しているmoduleに、っていうっぽい話なのだけど、site-packages下のmoduleを修正はしたくないので、それはやめておきまして。(Flaskで、似たようなことやったよね、ということは内緒です)
from numpy.core.umath_tests import inner1d
from sklearn.ensemble import RandomForestClassifier
上記の警告にあるように、inner1dを先読みさせてみてください。(Warningに出力されてたり。。。) いろいろやって、上記で警告が消えた、という話なので、正しいCodeは別にあるかもしれないので、ご注意ください。
気にしなければ、気にならない話なので。片隅にでも。
コメント
コメントを投稿