集体智慧编程 第二章 匹配商品

我们在前面学习了如何为指定人员寻找品味相近的人,以及如何向其推荐商品。但是如果我们想了解哪些商品是彼此相近的,应该如何做?


匹配商品

比如我们去淘宝,点击某个商品的时候,侧面总会给我们推荐一些类似商品。这是如何做到的呢?

首先我们要将之前的:{'Person':{'movie':score}} 的形式换成 {'Movie':{'person':score}}

用下列代码实现:

#这个函数就是将字典里面的人员和物品对调
def transformPrefs(prefs):
    result = {}
    for person in prefs:
        for item in prefs[person]:
            result.setdefault(item, {})
            #将物品和人员对调
            result[item][person] = prefs[person][item]
    return result

然后运行代码中添加:

print '\n=========================================='
print 'topMatches-Superman Returns'
movies = recommendations.transformPrefs(recommendations.critics)
print recommendations.topMatches(movies, 'Superman Returns')
可以看出结果:



现在我们就得到了一组与《Superman Returns》最为相近的电影。但是有一些相关评价值为负数,这说明喜欢《Superman Returns》的人,存在不喜欢《Just My Luck》的倾向。我们还可以为影片推荐评论者。

添加运行代码:

print '\n=========================================='
print 'getRecommendations'
movies = recommendations.transformPrefs(recommendations.critics)
print recommendations.getRecommendations(movies, 'Just My Luck')



当然,书上也强调了对调人和物不一定总是有意义的。但是大多数情况下,这都有助于做出对比。


=============================================================================

构建一个基于 del.icio.us 的链接推荐系统

这一节我们将学习如何从在线书签网站上面获得数据,如何利用这些数据查找用户,并向他们推荐以前没看过的链接。

这个网站的网站是 http://del.icio.us

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值