『集合知プログラミング』メモ(1)
今はなき社内勉強会用に書いたメモ。会社のRedmine上にページを作ったもので、自宅だと閲覧できないためここに移すことにした。
書籍
『集合知プログラミング』(2012年)
本書について書かれているWebサイトを見ると、発行年によって正誤箇所が異なるようだ・・・。
環境
読んだ箇所
1章〜2章2.3.1(p.11)
参考
下記2つのスライドを紹介しているサイト
http://makopi23.blog.fc2.com/blog-entry-26.html
- 勉強会スライド(前半) 集合知プログラミング第2章推薦を行う
- 勉強会スライド(後半) では、実際にAPIを使ってみます
- 正誤表 https://sites.google.com/site/prgclctintelligence/errata
- ユークリッド距離 http://d.hatena.ne.jp/ksmemo/20080731/p1
- どこかのゼミ資料(PDF) 集合知プログラミング 第2章 推薦を行う
正誤表
以下の正誤表はすべて2章分。テーブルのままだと横幅が足りないので箇条書きに変更。
p9
- 2.2直前に書かれている実行コードの最後行
- ","が1つ余計
p10
- 実行コード2行目
- 【誤】psqrt(pow(4.5-4,2)+pow(1-1,2))
- 【正】sqrt(pow(4.5-4,2)+pow(1-2,2))
- 関数sqrtが"psqrt"となっている、2つ目の関数powの引数が間違っている
p10
- 実行コード2行目の結果
- 【誤】3.16227…
- 【正】1.118033…
p11
- 実行コード1行目
- 【誤】1/(1+sqrt(pow(5-4,2)+pow(4-1,2)))
- 【正】1/(1+sqrt(pow(4.5-4,2)+pow(1-2,2)))
p11
- 実行コード1行目の結果
- 【誤】0.240253…
- 【正】0.472135…
p11
- sim_distance関数の最後行
- 【誤】return 1/(1+sum_of_squares)
- 【正】return 1/(1+sqrt(sum_of_squares))
p11
- 2つ目の実行コード1行目
- 【誤】reload(recommendations)
- 【正】import(recommendations)
- 基本的に初回にrecommendationsファイルを使用する場合はimport
p11
- 3つ目の実行コード2行目の結果
- 【誤】0.148…
- 【正】0.29429805…
その他
- recommendatioons.py 先頭に下記の記述を追加しておく
- この記述が抜けていると「SyntaxError: Non-ASCII character」エラーが出る
# coding: UTF-8
ユークリッド距離
実行コード
- 添付した recommendations.py を使用する
- Pythonの対話モードに入る
$ python
- os.chdir で recommendations.py を置いたディレクトリを指定する
>>> import os >>> os.getcwd() >>> os.chdir("/Users/a_aoyama/Desktop/work_python")
- 書面には載っていないが、「critics['Toby']['Snakes on a Plane']=3.0」で、値を変更することができる
>>> from recommendations import critics >>> critics['Lisa Rose']['Lady in the Water'] 2.5 >>> critics['Toby']['Snakes on a Plane'] 4.5 >>> critics['Toby']['Snakes on a Plane']=3.0 >>> critics['Toby']['Snakes on a Plane'] 3.0 >>> critics['Toby'] {'Snakes on a Plane': 3.0, 'Superman Returns': 4.0, 'You, Me and dupree': 1.0}
- Tobyの「Snakes on a Plane」の値を4.5に戻して
>>> from math import sqrt >>> sqrt(pow(4.5-4,2)+pow(1-2,2)) 1.118033988749895 >>> 1/(1+sqrt(pow(4.5-4,2)+pow(1-2,2))) 0.4721359549995794