资源经验分享推荐算法

推荐算法

2019-11-28 | |  54 |   0

原标题:推荐算法

原文来自:博客园      原文链接:https://www.cnblogs.com/lsh0908/p/11171513.html


各种相似度指标:https://www.cnblogs.com/arachis/p/Similarity.html

基于用户协同过滤

01.png

02.png

def getRecommendations(prefs,person,similarity=sim_pearson):

    simSum = {}

    totals = {}

    for other in prefs:

        if other == person: continue

        sim = similarity(prefs,person,other)

        if sim<=0: continue

        for item in prefs[other]:

            #只对自己未看过的电影进行评价

if item not in prefs[person] or prefs[person][item]==0:

                # Similarity * Score加权评价值

                totals.setdefault(item,0)   #因为下面是+=,所以必须初始化

                totals[item]+=prefs[other][item]*sim

                # Sum of similarities 相似值之和

                simSum.setdefault(item,0)

                simSum[item]+=sim

    rankings = [(totals[item]/simSum[item],item) for item in totals]

    #或者 rankings = [(total/simSum[item],item) for item,total in totals.items()]

    rankings.sort()

    rankings.reverse()

return rankings

03.png

04.png

def transformPrefs(prefs):

    result = {}

    for person in prefs:

        for item in prefs[person]:

            result.setdefault(item, {})

            # 将物品和人员对调

            result[item][person] = prefs[person][item]

    return result

def calculateSimilarItems(prefs,n=10):

  result={} # 建立字典,以给出与这些物品最为相近的其他物品

  itemPrefs=transformPrefs(prefs) # 以物品为中心对偏好矩阵实施倒置处理

  for item in itemPrefs: # 寻找与item最为相近的n个物品

    scores=topMatches(itemPrefs,item,n=n,similarity=sim_distance)

    result[item]=scores

  return result

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:人工智能09 计划、动作和学习

下一篇:LightGBM,面试会问到的都在这了(附代码)!

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...