算法简介
协同过滤算法在数据挖掘算法中属于比较简单的,在《集体智慧编程》一书中,开篇讲的就是协同过滤算法。这章早就看完了,没有用代码区实现而已,今天动手敲了代码,返现还是有些感触,特此记录下。
协同过滤的算法核心在于以下两方面:
1)怎么衡量两个向量之间的相似性,此处可以参见我转载的一片博客:数据挖掘之距离计算算法
2)从集合中找出与自己喜好相似度不为零的人中,找出偏好没有出现在我的集合中或打分为0的选项
3)为了避免某些项打分过高产生的影响,采用权重,权重的计算可以由相似度来计算。参见以下代码。
相关性系数计算
#--------------Euclidean distance------------#
def calc_ed_distance(fans,p1_name,p2_name):
sim = {}
for k in fans[p1_name].keys():
if k in fans[p2_name].keys():
sim[k] = 1
if l