データサイエンスや機械学習分野においてはPythonしかないといった雰囲気があります。確かにPythonにはデータサイエンス向けのライブラリが多数揃っており、はじめる敷居は低いでしょう。
しかしそんな中にあってもRubyでデータサイエンスをやりたいという方は多いはずです。そこで使ってみたいのがLurnです。
Lurnの使い方
基本的な使い方です。こちらはテキスト分類をおこなっている例です。
という文字がコンピュータかスポーツのどちらに分類されるのかを判定しています。
programming is fun
require 'lurn'documents = ['ruby is a great programming language','the giants recently won the world series','java is a compiled programming language','the jets are a football team']labels = ['computers','sports','computers','sports']vectorizer = Lurn::Text::BernoulliVectorizer.newvectorizer.fit(documents)vectors = vectorizer.transform(documents)model = Lurn::NaiveBayes::BernoulliNaiveBayes.newmodel.fit(vectors, labels)new_vectors = vectorizer.transform(['programming is fun'])probabilities = model.predict_probabilities(new_vectors.first)# => [0.9715681919147049, 0.028431808085295614]model.max_class(new_vectors.first)
日本語の場合、一旦分かち書きをおこなわなければなりません(この手の技術によくありがちですね)。名詞、形容詞だけ取り出して試すとちゃんと判定されます。
require 'lurn'documents = ['Ruby すごい プログラミング 言語','ジャイアンツ ワールドシリーズ 優勝','Java コンパイル プログラミング 言語','JETS フットボール チーム']labels = ['コンピュータ','スポーツ','コンピュータ','スポーツ']vectorizer = Lurn::Text::BernoulliVectorizer.newvectorizer.fit(documents)vectors = vectorizer.transform(documents)model = Lurn::NaiveBayes::BernoulliNaiveBayes.newmodel.fit(vectors, labels)new_vectors = vectorizer.transform(['プログラミング 楽しい'])probabilities = model.predict_probabilities(new_vectors.first)# => [0.6923076923076918, 0.3076923076923079]model.max_class(new_vectors.first)# => "コンピュータ"
デモとしてはテキスト分類ですが、APIはscikit-learnに合わせて設計されています。scikit-learnは分類や回帰、クラスタリングができるライブラリなので、同様の操作をRubyで行いたい時に使えるでしょう。
LurnはRuby製のオープンソース・ソフトウェア(MIT License)です。
dansbits/lurn: A ruby gem for elegant data science and machine learning
MOONGIFTの関連記事
コメント