推荐系统学习总结

说明:之前学过的知识的总结
推荐系统:
协同过滤推荐:基于物品的推荐&基于用户的推荐
步骤
user-based
建立用户-物品评分举证
对矩阵进行SVD分解具体代码实现
目标用户的邻居用户
物品的预测评分
推荐评分最高K个物品

__author__ = 'DELL'
from math import sqrt

'''critics={'Cathy':{'a':2.5,'b':3.5,'c':3,'d':3.5,'e':2.5,'f':3},
         'Sophie':{'a':3,'b':3.5,'c':1.5,'d':5,'e':1.5,'f':3},
         'Susie':{'a':2.5,'b':3,'d':3.5,'f':4},
         'Antonio':{'b':3.5,'d':4,'e':2.5,'f':4.5},
         'Marco':{'a':3,'b':4,'c':2,'d':3,'e':2,'f':3},
         'Jack':{'a':3,'b':4,'d':5,'e':3.5,'f':3},
         'Leo':{'b':4.5,'d':4,'e':1.0}
}'''

def loadMovieLensTrain(filename='u1.base'):
    str1 ='./ml-100k/'
    prefs={}
    for line in open(str1+filename,'r'):
        (user,movieid,rating,ts)=line.split('\t')
        prefs.setdefault(user,{})
        prefs[user][movieid]=float(rating)
    return prefs

def loadMovieLensTest(filename='u1.test'):
    str1 ='./ml-100k/'

    prefs={}
    for line in open(str1+filename,'r'):
        (user,movieid,rating,ts)=line.split('\t')
        prefs.setdefault(user,{})
        prefs[user][movieid]=float(rating)
    return prefs

def sim_distance(prefs,person1,person2):
    si={}
    for item in prefs[person1]:
        if item in prefs[person2]:
            si[item]=1
    if len(si)==0:
        return 0

    sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
                        for item in prefs[person1]
                        if item in prefs[person2]])
    return 1/(1+sqrt(sum_of_squares))

def top_match(prefs,person,n,similarity=sim_distance):
    scores=[(similarity(prefs,person,other),other) for other in prefs if other!=person]
    scores.sort()
    scores.reverse()
    return scores[0:n]

prefs=loadMovieLensTrain(filename='u1.base')
print top_match(prefs,'1',5)

item-based
建立用户-物品评分举证
对矩阵进行SVD分解具体代码实现
相似的K个物品
根据用户对物品的评分找出最相似的K个物品

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值