Ch2.Making Reconmmendation in PCI

时间:2022-06-30 15:19:18

做《Programing Collective Intelligence》中chapter 2.Making Recommendation的实例,有3个问题花了好长时间:

1. 遇到报错"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequence"。看了http://www.tuicool.com/articles/nEjiEv这篇文章confirm了是编解码的问题,明显Python是用gbk解码数据文件的,而数据文件是用其他方式编码。用Notepad++能看到文件是encoding in ANSI,是用ANSI编码的。http://zhidao.baidu.com/link?url=JWUp5uFuU0lhUXVclozgbZybW9jVu8SfYbUHqQyGakr-27hhoy5xYrMSgtjuMEHZQLDy2HEe-DN6SKmekbUE2q这篇知道里提及open()有encoding这个argument可以设置解码方式,于是把encoding设置成utf-8,把数据文件u.item也在notepad里保存成encoding in utf-8。结果呢,还是不行,还是报gbk给您解不了码。后来就用help(open)查open这个属性到底怎么用,没道理啊,设成utf-8怎么还gkb在解啊。终于,才知道,当encoding=utf-8时只能解码用utf-8编码的text file,而我的数据文件是item类型(具体item是个什么文件类型,不详)。就用notepad把.item另存为.txt,这才可以顺利解码读取数据文件了。

2. 第二个问题是在用pydelicious API时报了很多invalid syntax的错,因为里面有许多语法没有见过,没法下判断,没法针对性去搜solution,就先放放了。

3. 第三个遇到的是keyerror,http://scnjl.iteye.com/blog/905177这篇文章提到“用dict[key]这个读取会报KeyError异常”,在知道不是数据不是自己操作有问题,果断用了try..except pass把异常pass掉,证明也没用影响结果。

除了上述python程序语法上的问题,其实关于做推荐的逻辑还没有好好看透,只是先把程序代码抄下来走通了,还要再程序再看上几遍。