MLのお砂場(2) 「続いて」scikit-learnインストールと動作確認したけれども

Joseph Halfmoon

前回、ML(Machine Learning)をお砂場するためのPython実行環境として JupyterLab をインストールいたしました。それもVScode経由なのかブラウザでなのか一筋縄ではいかない感じでした。今回は実際にMLするためのライブラリを導入、動作確認したいと思います。選んだのは、scikit-learnであります。

機械学習のアルゴリズムというとまあいろいろあって、また開発も現在進行形だったりするのでとても素人には把握しきれるものではありません。それに、数学的な説明ばかり読んでも私のような凡人にはサッパリです。ここはお砂場の中で、サンプルデータをありがちなアルゴリズムで動かしながら、噛み締めて行きたいと。

そんな中、多方面の機械学習アルゴリズムを擁し、また、使用者も多いので、サンプルデータへの適用例なども見つかり易い scikit-learn(sklearn)をチュートリアルから一歩一歩登って行きたいと思います。公式ページは以下です。

scikit-learn

インストールそのものは、普通にpipで出来るので、特に問題ありません。また、直接依存関係のあるライブラリ等はpipが良きに計らってくれます。しかし、sklearnのバージョンを知るための以下のコマンドを走らせると、直接依存するわけではないけれども、併用するかも知れないライブラリが浮かびあがってきます。

python -c "import sklearn; sklearn.show_versions()"

そのうち 以下はお馴染みということでインストール済です。

  • numpy
  • scipy
  • matplotlib

しかし、2つ抜けてました。

pandas

Cython C-Extensions for Python

いつ使うかはまだ定かでないですが、入れておく、というもんでしょう。結果、sklearn.show_versions()は冒頭のアイキャッチ画像のようになりました。

sklearnの動作確認

show_versions()できたということは、ちゃんとモジュールがインポートされとるということではあります。しかし、何かMLらしい計算をして確認したいものです。まあ練習の一環ということで、sklearnの以下のページを頭からエクササイズしてみることにいたしました。

Getting Started

冒頭「フィッティングと予測、推定量の基本」ということで、「ランダムフォレスト」が登場するのです。「ランダムフォレスト」、名前は聞いたことがありますが、本当のところどんなアルゴリズムなのだか理解しとりません。

今回は「動作確認」とて、Getting Started通りに入力して動かしてみました。こんな感じ。randomForestSample

Xというリストに並べてある3個の数が特徴量で、それぞれの組に対する分類結果が yというリストの数字、グループ0,グループ1ということで良いのですかね。

このアルゴリズムが Getting Started の冒頭に選ばれたのは、何もわかっていなくても、適当にデータ与えれば動く感じがするからでしょうか。設定しなければならない項目も少ないみたいだし。そして predict()などとするとちゃんと予測をしてくれる、と。

どうも上の例では、[1,2,3]見たいな「小さい数字の組、グループ0」と[11, 12, 13]みたいな「大きい数字の組、グループ1」で分類するような学習がなされているみたいに見えます。例題の最後に[4,5,6]と問いかけると0、[14, 15, 16]と聞けば1と答えていると。

勝手にデータ組を与えて様子をうかがってみました。期待では2個とも「おおきい方」グループ1に分類される、と。randomForestTry

上の結果みると、当方の勝手な期待と一致しているみたい。

まあこうして戯れていても進歩が無いのでアルゴリズムを勉強(いやサンプルデータで体感)していかねばなりません。ま、それは次回からだな。

sklearnのドキュメント

読まねばならないドキュメントは大量にあり、今回例のランダムフォレストに関しても立派なマニュアルが存在します。

ランダムフォレスト識別器

上記のWeb資料へ行かずとも、Jupyter notebook環境でも pythonのhelpシステムは利用できるので、以下のようにすればかなり大部なドキュメントが現れます。でもね、分かっていて、どんなパラメータがあったっけ、というときには役立ちそうなマニュアルですが、アルゴリズムのね、基本が理解できてない人には無用の長物、豚に真珠。まあ、ボチボチとな。「アンサンブル学習」知らんけど。

randomForestHelp

 

 

MLのお砂場(1) 「とりあえず」JupyterLab環境はセットアップしたけれども へ戻る

MLのお砂場(3) ML業界のHello world? Iris データセットをのぞく へ進む