2008-10-04から1日間の記事一覧

2章 その4

今回は関数ポインタが出てくるので、rubyのObject#method関数を使った http://www.ruby-lang.org/ja/man/html/Method.html 全ての人の中から趣向の近い人を求める。全員との相関を計算して、相関係数の高い人から順に並べる。 これまで相関計算方法を2つやっ…

2章 その3

p.13より その2のユークリッド距離を用いた方法では、人それぞれ高い点数を付ける人や低い人など色々いて、その差が相関に影響を与えてしまう。 傾向の差を埋める為にピアソン相関係数を使う。recommendations.rb に sim_pearson関数を追加 class Critics # …

2章 その2

p.11より、2人の全ての映画評価から類似性を計算する(pythonのsum関数は、配列を渡すと要素が数値だったら全て足して結果を返すらしい) recommendation.rbにsim_distance関数を追加 class Critics # Person1とperson2の距離を基にした類似性スコアを返す d…

2章 その1

これをRubyにする 元データを作っておく p.8より recommendations.rb class Critics def users return @users end def initialize @users = { 'Lisa Rose' => { 'Lady in the Water' => 2.5, 'Snake on a Plane' => 3.5, 'Just My Luck' => 3.0, 'Superman R…

2章 その7

Rubyのdelicious用ライブラリのインタフェースが、本に書かれているコードに合わないので適宜自作していくことにした。 あるタグを最近付けられたページの一覧 http://feeds.delicious.com/v2/rss/popular/ruby?count=15あるページにつけられたユーザのコメ…

20ページまできた。 deliciousを読んでるpythonのライブラリと同じ動きをrubyでやってて疲れてきた 全部翻訳は無理かな・・

WWW::Delicious入れた

sudo gem install WWW-Delicioushttp://www-delicious.rubyforge.org/ require 'rubygems' require 'www/delicious' if ARGV.length < 2 puts '引数にuser,passを渡してね' end user = ARGV[0] pass = ARGV[1] d = WWW::Delicious.new(user, pass) puts d.up…

deliciousruby入れた

del.icio.us APIのラッパーを http://rubyforge.org/search/?type_of_search=soft&words=delicious sudo gem install deliciousruby入れた

2章 その6

今度は商品を中心に考える。商品への趣向のリストから似た人を計算してきたが、要素を入れ替えるだけで似た商品を求める事ができる。 ユーザ達にされた評価(良いと付けたものも悪いと付けたものも)の傾向が似ている商品は、内容が似た商品になる {人1 => {…

2章 その5

これまでで自分と似た趣向を持つ人を探したが、人ではなく商品をrecommendしたい。 趣向の相関係数を商品のスコアにかけ算する事で、似た趣向を持つ人の意見を重視して商品推薦を行う。 全員のスコアに相関係数をかけてからアイテムの平均スコアを求める p.1…