python实现SlopeOne

SlopeOne是一种Item_based 协同过滤推荐算法,本文对python源代码添加了中文注解,并举例应用slopeone类进行评分预测。
摘要由CSDN通过智能技术生成

Slope One 算法是由 Daniel Lemire 教授在 2005 年提出。本文主要是对http://www.serpentine.com/blog/2006/12/12/collaborative-filtering-made-easy/的翻译,对源代码添加了中文注解,希望大家对SlopeOne代码理解更加深入:


数据格式

首先,介绍SlopeOne接收的数据格式:例如,Alice 给 squid 的评分为 1.0,给 cuttlefish 的评分为 4.0,bob 给squid 评分 1.0,cuttlefish 评分1.0,octopus 评分 3.0。很容易,在Python中实现,代码如下:

userdata = dict(alice = dict(squid = 1.0, cuttlefish = 4.0),
     bob = dict(squid = 1.0, octopus = 1.0,cuttlefish = 3.0))

将 userdata 打印一下,简单理解即:一个字典中又包含多个字典,第一个字典的键值是user名称,value值是一个字典,暂且称之为子字典/second-level dict,并且,用户的个数决定了子字典的个数。每一个子字典,键值为 item名称,value值为 评分数据/rating。本例中,第一个字典包含两条数据,分别是alice及其对应的子字典,与bob及其对应的子字典。 每一个子子字典中包含对 squid的评分 与 对cuttlefish的评分或对 octupus的评分。

for user, prefs in userdata.iteritems():
    for item,rating in prefs.iteritems():
        print user + ":\t" +  item + "\t" + str(rating) + "\n"

SlopeOne类

本文重点,SlopeOne类中包含update与predict两个方法,我都添加了注释,建议自己使用例子中的数据,

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值