jupyterでmatplotlibのグラフ化に躓いた

scikit-learn(サイキットラーン)とは

Python機械学習をするために必要なライブラリ。配列型(データフレーム型?)を使用することが可能になるPandas(パンダス)、計算に強いNumpy(ナンパイ)と組み合わせて使用する。後者二つはimport Pandas, import Numpyの形でインポートするけれども、scikit-learnはfrom sklearn import treeのような形でインポートして使用する模様。

先週からはこのscikit-learnを使ってK-meansクラスタリングをしたり、CART法での決定木分析をしたり、単回帰分析をしたり、ということを試みてきた。「Pythonでデータサイエンス」様(https://pythondatascience.plavox.info/)の説明を拝読しつつ、そちらに掲載されているようなscikit-learn付属のデータを、自力で用意したcsvに置き換えて挑戦している(といって実行環境はJupyterなので、csvをアップロードして読み込むだけの違いではあるが)。

上記三つ、手法や目的こそ違っても基本的な流れは同じで、①ライブラリとデータのインポート②説明変数と目的変数を指定して実行③結果をmatplotlibで可視化 の手順で行われている。個々の話は気が向いたときに追々していくとして、③の段階でずっとグラフが出ずに頭を抱えていたという話だけにとどめておきたい。

matplotlibのグラフが出力されなかった話

結論から言って、%matplotlib inlineで解決した。

matplotlib、前項で上げたような機械学習の結果をグラフに示して表示してくれるものなのだけれども、それがテキストだけを吐き出してうんともすんとも言ってくれずに困り果てていた。エラーというわけではないようでエラー文も出ず、調査のための目途も立たず、弊社の先輩に泣きついたところ、「魔法の言葉を書かなきゃいけないんですよ~」と言われて渡されたのがこれだった。

from matplotlib import pyplot
%matplotlib inline

形としてはこんな感じ。魔法の言葉とだけ言われているので、なぜこれだけで動くのかはっきりしていないのだけれども、とりあえずこれで解決したよということで……。

何かを解決するたびに新たな疑問が出てくるので一向に先に進んでいる気がしない。目標はSPSS modelerを使わずにPython機械学習がある程度できるようになること、なので、丁寧に疑問を摘んでいければと思う。