集合知プログラミング
- 作者: Toby Segaran,當山仁健,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/07/25
- メディア: 大型本
- 購入: 80人 クリック: 2,024回
- この商品を含むブログ (263件) を見る
売り切れ必死かと思いきや,運良く梅田のジュンク堂に2冊残っており無事入手できました.
さっそく読み始め,2章のユークリッド距離によるスコアをRubyで書き直してみました.
require 'enumerator' require 'yaml' require 'pp' class Array def sum self.inject(0) {|total, i| total + i} end end def sim_distance(prefs, person1, person2) both = {} prefs[person1].each_key do |key| both[key] = 1 if prefs[person2].key? key end return 0 if both.size == 0 sum_of_squares = both.enum_for(:each_key).map {|key| (prefs[person1][key] - prefs[person2][key])**2 }.sum return 1/(1 + sum_of_squares) end if __FILE__ == $0 data = File.open("critics.yaml") {|f| f.read } critics = YAML.load(data) p sim_distance(critics, "Lisa Rose", "Gene Seymour") #=> 0.148148148148148 end
読み進めるのが非常に楽しいです.