ITエンジニア/デザイナ向けにオープンソースを毎日紹介

データサイエンスや機械学習分野においてはPythonしかないといった雰囲気があります。確かにPythonにはデータサイエンス向けのライブラリが多数揃っており、はじめる敷居は低いでしょう。

しかしそんな中にあってもRubyでデータサイエンスをやりたいという方は多いはずです。そこで使ってみたいのがLurnです。

Lurnの使い方

基本的な使い方です。こちらはテキスト分類をおこなっている例です。

  1. programming is fun
という文字がコンピュータかスポーツのどちらに分類されるのかを判定しています。

  1. require 'lurn'
  2. documents = [
  3. 'ruby is a great programming language',
  4. 'the giants recently won the world series',
  5. 'java is a compiled programming language',
  6. 'the jets are a football team'
  7. ]
  8. labels = ['computers','sports','computers','sports']
  9. vectorizer = Lurn::Text::BernoulliVectorizer.new
  10. vectorizer.fit(documents)
  11. vectors = vectorizer.transform(documents)
  12. model = Lurn::NaiveBayes::BernoulliNaiveBayes.new
  13. model.fit(vectors, labels)
  14. new_vectors = vectorizer.transform(['programming is fun'])
  15. probabilities = model.predict_probabilities(new_vectors.first)
  16. # => [0.9715681919147049, 0.028431808085295614]
  17. model.max_class(new_vectors.first)

日本語の場合、一旦分かち書きをおこなわなければなりません(この手の技術によくありがちですね)。名詞、形容詞だけ取り出して試すとちゃんと判定されます。

  1. require 'lurn'
  2. documents = [
  3. 'Ruby すごい プログラミング 言語',
  4. 'ジャイアンツ ワールドシリーズ 優勝',
  5. 'Java コンパイル プログラミング 言語',
  6. 'JETS フットボール チーム'
  7. ]
  8. labels = ['コンピュータ','スポーツ','コンピュータ','スポーツ']
  9. vectorizer = Lurn::Text::BernoulliVectorizer.new
  10. vectorizer.fit(documents)
  11. vectors = vectorizer.transform(documents)
  12. model = Lurn::NaiveBayes::BernoulliNaiveBayes.new
  13. model.fit(vectors, labels)
  14. new_vectors = vectorizer.transform(['プログラミング 楽しい'])
  15. probabilities = model.predict_probabilities(new_vectors.first)
  16. # => [0.6923076923076918, 0.3076923076923079]
  17. model.max_class(new_vectors.first)
  18. # => "コンピュータ"

デモとしてはテキスト分類ですが、APIはscikit-learnに合わせて設計されています。scikit-learnは分類や回帰、クラスタリングができるライブラリなので、同様の操作をRubyで行いたい時に使えるでしょう。

LurnはRuby製のオープンソース・ソフトウェア(MIT License)です。

dansbits/lurn: A ruby gem for elegant data science and machine learning

MOONGIFTプレミアムに登録して運営をサポートしてください!月額500円の他、半年(3,000円)、年間パック(6,000円)もあります。企業向けに3アカウント以上で請求書払いも可能です(年間一括のみ)。従業員の方向けのサービスにいかがですか? プレミアムユーザのログインはこちらから

 

MOONGIFTの関連記事

コメント

  • DevRel
  • Com2