体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

Rubyでデータサイエンスができるのか?ワークショップ「DataScience.rb」に参加した

なぜRubyでデータサイエンスは行われないのか?

最初に登壇したのは、Rubyのコミッターであり、Speeeのエンジニアでもある村田賢太さん。「Rubyでデータサイエンスやろう!」と言い出した張本人です。

株式会社Speee 村田賢太さん
CRubyコミッタ。bigdecimalメンテナ。pycall開発者。

なぜRubyでデータサイエンスは行われないのか。

それはRubyが言語として劣っているからというわけではありません。村田さんが指摘したのは、ツールやユーザー、開発者が足りないこと。

Pythonでやりたいことができるなか、わざわざRubyでのデータサイエンスを目指す取り組みに投資する企業も少ないという原因もありそうです。

Rubyでデータサイエンスをするためにはどんな手段が存在するか

Rubyでデータサイエンスするために、村田さんが考える主な手段は3つ。「巨人の肩に乗る、つまりPythonに乗っかること」「既存のgemをなんとかすること」「Rubyのための仕組みをつくっていくこと」。

このワークショップでは、この手段それぞれに対する試みについてのプレゼンテーションとデモが行われました。

会場となった『Speee Lounge』。淹れたての美味しいコーヒーをいただきました。

Rubyライブラリ「PyCall」を使ってデータサイエンス!

イントロダクションからの続投で、村田さんによるプレゼンテーション。村田さんの取り組みは「巨人の肩に乗る、つまりPythonに乗っかること」。

簡単に言えば、「Pythonで使う機能をRubyから使っちゃおう!」というものです。

村田さんが今も絶賛開発している「PyCall」は、Rubyからlibpython.soを使うための拡張ライブラリ、つまり、Rubyの文法でPythonの機械学習で使う機能が使えるようにしたgemです。

ワークショップでは、現在開発中のもののデモを行いました。

PyCallはデータサイエンスでよく使用される「Jupyter Notebook」上でも動作します。Jupyter Notebookはブラウザ上で使える、Rubyでいうとirbのようなものです。

irbとの違いは、実行結果の出力において、画像オブジェクトは画像として表示できたり、データを表やグラフとして表示することができたりする点です。多くのデータサイエンティストはこのアプリケーションを使ってデータ解析をしています。

PyCallを使えば、例えば、機械学習でよく使われる、行列のような複雑な計算を効率よくできるPythonライブラリ「NumPy」もRubyから使えるようになります。

また、データ操作のためのPythonライブラリ「pandas」もRubyから。

もちろん、機械学習用のライブラリscikit-learnも使うことができます。

デモでは、これらのPythonライブラリをRubyから使い、タイタニック号の乗客データを用いた乗客の生存予測を行いました。

どの要素がどのくらい生死に寄与しているかをseaborn の barplot を使ってグラフ化している。

PyCallおよび今回のデモプログラムは、GitHubから落として自分の環境で試すことができます。
今回使われたデモはこちらのexamples/datasicence_rb_20170519.ipynbです。
村田さんのプレゼンテーション資料はこちらから。

PyCallは、ラッパー未実装による不自然な記法が残っていたりと、まだ実現したいことすべてを実装できているわけではないのだそう。

1 2次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。