※ 最新版が公開されました。
ライブラリが更新され、かなり使い方が変わっています。
以下の記事にて新しいバージョンの説明をしてありますので、ご確認下さい。
[PyCallを使ってRubyからPythonのライブラリを使い倒す]
(https://qiita.com/mix_dvd/items/d49ed4ff6553f3ace5a7)
はじめに
mrknさんがPyCallというライブラリを開発されているので、早速試してみました。
インストール
2017年2月24日現在、以下の手順でインストールできるようになりました。
mrknさん、ありがとうございます。
gem install --pre pycall
旧インストール方法
備忘録的に残しておきます。
もし、上記手順でインストールできなかった場合にお試し下さい。
ソースコードがGitHubからダウンロードできます。
2017年2月23日現在、開発中のブランチからダウンロードするとのことだったので、以下のコマンドで入手しました。
git clone -b eval https://github.com/mrkn/pycall.git
そこからGemのインストールに少々手こずってしまいましたが、以下の手順でインストールができました。
もっとスマートな方法をご存知の方がおられましたらご教示ください(汗)
# Gemファイルの作成
gem build pycall/pycall.gemspec
# Gemのインストール
gem install pycall-0.1.0.alpha.gem
# なぜかGemのフォルダ内が空っぽなので、とりあえず削除
rm -rf ~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pycall-0.1.0.alpha
# ダウンロードしたソースをコピー
mv pycall ~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pycall-0.1.0.alpha
ちなみに、僕はPythonをAnacondaでインストールして使い、Rubyはrbenvを使ってインストールしたものを利用しています。
とりあえずグラフを描画してみる
以下のコードでグラフを表示できました。
require 'pycall/import'
include PyCall::Import
pyimport 'numpy', as: 'np'
pyimport 'matplotlib.mlab', as: 'mlab'
pyimport 'matplotlib.pyplot', as: 'plt'
plt.plot.([1,3,4,6,7,9])
plt.plot.([3,2,4,1,5,0])
plt.show.()
iRuby Notebookでグラフを表示してみる
上記のソースコードをiRuby Notebookで実行すると、グラフを描画することはできるのですが、同じように別ウィンドウでグラフが表示されました。
しかも、その後の動作がちょっと不安定(汗)
これではちょっと困るので、以下のように変更。
require 'pycall/import'
include PyCall::Import
pyimport 'numpy', as: 'np'
pyimport 'matplotlib.mlab', as: 'mlab'
pyimport 'matplotlib.pyplot', as: 'plt'
plt.plot.([1,3,4,6,7,9])
plt.plot.([3,2,4,1,5,0])
# グラフを画像として保存
plt.savefig.("pycall.png")
plt.close.()
# 保存されたグラフの画像を読み込む
open("pycall.png")
インラインで表示させることができました。
グラフのサイズを変更してみる
指定しないと正方形のグラフが表示されたので、これを少し変更します。
require 'pycall/import'
include PyCall::Import
pyimport 'numpy', as: 'np'
pyimport 'matplotlib.mlab', as: 'mlab'
pyimport 'matplotlib.pyplot', as: 'plt'
plt.figure.(figsize: PyCall.tuple(8, 3))
plt.plot.([1,3,4,6,7,9])
plt.plot.([3,2,4,1,5,0])
# グラフを画像として保存
plt.savefig.("pycall.png")
plt.close.()
# 保存されたグラフの画像を読み込む
open("pycall.png")
できた!
次は機械学習を試してみたくなりますね(^-^)
機械学習もしてみました(追記)
電力需要予測を実行した結果を以下のURLから参照できますので、興味のある方がおられましたらご覧下さい。
電力需要実績から電力需要予測
http://blueomega.jp/predict_kw_with_pycall.html
電力需要実績に1時間前の気温を加えて電力需要予測
http://blueomega.jp/predict_kw_with_temp_and_pycall.html