ちょっとだけ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は別にあるかもしれないので、ご注意ください。
気にしなければ、気にならない話なので。片隅にでも。

コメント

このブログの人気の投稿

Tabulatorで行こう! 〜ダイバー編〜

Tabulatorで行こう! 〜違うじゃん編〜

Fedoraで行こう! 〜音声合成pyttsx3編〜