IPython(Anaconda)とIJuliaが凄すぎる件

先日Juliaでデータ分析環境をインストールする話を書きましたが、もっといいやつがあったのでご紹介します。(IJuliaです。実はjuliaのホームページにそっくり掲載されてるのですが先日はなぜかスルーしてしまってた)

先の記事の最後に「Python(Pandas/Scipy/Sklrn等を使う環境)とJuliaで比較しながら今後の道具立てを整えたい」みたいなこと書きましたが、別にどっちかに決めなくても両方同時につかえちゃうIPython(Anaconda)という無料のすごいツール(オプション機能は有料ですが、その有料オプションがこれまた凄い)がありました。

開発元やライセンスなど(そういうのはいいから早くインストールしたい人は次節へ)

IPythonというのは「Pythonにデータ分析系のライブラリをごっそりプレインストールしてかつMathematicaみたいなノートブック型のGUIをつけちゃった」というツールで、約2年の開発を経て今年8月末にver1.0がリリースされたというツールです。こんなの出たらSageとかマジオワコン感。

IPython自体はFernando Perezさんという方が中心となってマイクロソフトから約1千万円の寄付を受けたりしながらやってるオープンソースプロジェクトだそうですが、Linux+Redhatみたいにエンタープライズ向けのビジネスをやってるCONTINUUMという会社があって、インストーラ付きのディストリビューション"Anaconda"がそこから出てます。

このCONTINUUMという会社、IPythonの基本機能は無料で、有料のオプション機能や、それをクラウドサービス化した"Wakari"というデータ分析版Herokuみたいな感じのPaaS(SaaS?)を提供するという、いわばフリーミアムなビジネスモデルでやってるようです。

そのAnacondaの有料オプションがまたすごくて、GPUを使ってアクセラレーションできる"Accelarate"、SQL系のRDBやMongo等のNoSQLなどあらゆるDBにデータアクセスできる"IOPro"、SciPy/NumPyのバックエンドライブラリをインテルのMKLライブラリで置き換えることで高速化を図る"MKL"という3つのイケてるオプションがいずれも年間数十ドル(1万円以下)という安さで提供されてます。マジすげぇ。もうRとかいらな(ry

IPythonとJulia

Mathematicaを使ったことある人にはおなじみの構造ですが、IPythonはGUIと計算エンジン(カーネルと呼ぶ)が分離されていて、Python以外のカーネル組み合わせて同じGUIを使うことが出来ます。

Julia側でIPythonのGUIに対応するためのライブラリがIJuliaというやつで、これを入れておくとGUI上でJuliaを使いながらPythonのmathplotlibを使ってグラフを表示できます。すごい。

PythonとJuliaを両方インストールして問題によって使うエンジンを切り替えたりとかする用途にピッタリですね。

インストール

基本的IJuliaのページにある通りやるだけですが、一応書いておきます。

IPythonのインストーラ付きバージョンであるAnacondaをこちらからダウンロードしてインストールします。

続いて、Julia処理系を起動して"IJulia"と"PyPlot"をインストールします。Pkg.addしてPkg.updateすればOK.

julia> Pkg.add("IJulia")
julia> Pkg.add("PyPlot")
julia> Pkg.update()

ここでインストールに失敗したときのためにトラブルシューティングとして私が対応したものを以下に書いておきます。

  • ZMQパッケージのインストールに失敗する場合、32ビットmingwと64bitmingwが混在してるのが原因の場合があるので (ユーザのディレクトリ)\.julia\zmq\deps を消してから Pkg.add("ZMQ")してPkg.build("ZMQ") しなおす
  • Juliaの0.2-rcなんとかというReleaseCandidateなバージョンのJuliaを使っている場合は0.2リリース版をちゃんと入れる(Julia0.2は一か月前とかでもRCなので注意)
  • Pythonは2.7.3から2.7.4でビルトインライブラリでMAXREPEATという定数が導入されたせいでバージョン互換性が無く、それにはまった場合はIJuliaを入れなおす(もう一つJuliaを別のディレクトリにインストールしてPkg.add("IJulia"),Pkg.add("PyPlot"),Pkg.update()して問題なければそちらに移行するとか)

それと、ここでusing PyPlot出来るかチェックしておくと良いです。

julia> using PyPlot
(エラーがでなければOK)

エラーが出る場合は上記箇条書きをチェックしてみてください。あとこの記事のコメント欄で質問してくだされば私が対応して知ってるやつだったらお答えしますのでお気軽にコメントください。

起動

WindowsならスタートメニューからAnacondaのメニューグループを選んで「Anaconda Command Prompt」でコマンドプロンプトを起動し、以下のコマンドを実行。

C:\Users\isobe\Anaconda>ipython notebook --profile julia
つらつらとログが出てくる

ローカルサーバが立ち上がり、ブラウザタブが勝手に開いてインタラクティブなWebページが出てきます。

「New Notebook」ボタンを押すとノートブック画面に移ります。juliaのコードを入れて実行マークの三角ボタンをを押す。

素晴らしい。

前回の記事で書いたD3js向けのGadflyもこのnotebook上にプレビューを出せるみたいです。すごい。

というわけで

あとはガシガシと学んだ数式をアルゴリズムに落とし込んでいくのみ。