ML之RS之CF:基于用户的CF算法—利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分)

简介: ML之RS之CF:基于用户的CF算法—利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分)

输出结果


先看推荐结果显示


image.png



实现代码


from math import sqrt

#pearson距离

def pearson_dis(rating1, rating2):

   sum_xy = 0

   sum_x = 0

   sum_y = 0

   sum_x2 = 0

   sum_y2 = 0

   n = 0

   for key in rating1:

       if key in rating2:

           n += 1

           x = rating1[key]

           y = rating2[key]

           sum_xy += x * y

           sum_x += x

           sum_y += y

           sum_x2 += pow(x, 2)

           sum_y2 += pow(y, 2)

   # now compute denominator

   denominator = sqrt(sum_x2 - pow(sum_x, 2) / n) * sqrt(sum_y2 - pow(sum_y, 2) / n)

   if denominator == 0:

       return 0

   else:

       return (sum_xy - (sum_x * sum_y) / n) / denominator

#查找最近邻函数

def computeNearestNeighbor(username, users):

   """在给定username的情况下,计算其他用户和它的距离并排序"""

   distances = []

   for user in users:  #全用户遍历,找到两个用户,计算pearson距离,依次添加到列表内

       if user != username:  

           #distance = manhattan_dis(users[user], users[username])

           distance = pearson_dis(users[user], users[username])

           distances.append((distance, user))

   distances.sort()

   return distances

#进行推荐函数

def recommend(username, users):

   nearest = computeNearestNeighbor(username, users)[0][1]

   recommendations = []

   neighborRatings = users[nearest]

   userRatings = users[username]

   for artist in neighborRatings:

       if not artist in userRatings:

           recommendations.append((artist, neighborRatings[artist]))

   results = sorted(recommendations, key=lambda artistTuple: artistTuple[1], reverse = True)

   for result in results:

       print(result[0], result[1])

recommend('Jason', users)

 

相关文章
|
8月前
|
算法 Shell
通信系统中ZF,ML,MRC以及MMSE四种信号检测算法误码率matlab对比仿真
通信系统中ZF,ML,MRC以及MMSE四种信号检测算法误码率matlab对比仿真
|
8月前
|
机器学习/深度学习 算法 数据库
KNN和SVM实现对LFW人像图像数据集的分类应用
KNN和SVM实现对LFW人像图像数据集的分类应用
116 0
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
142 4
|
7月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
7月前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
|
5月前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
|
7月前
|
存储 算法 Java
Java数据结构与算法:用于高效地存储和检索字符串数据集
Java数据结构与算法:用于高效地存储和检索字符串数据集
|
8月前
|
机器学习/深度学习 人工智能 算法
分类算法入门:以鸢尾花数据集为例(上)
分类算法入门:以鸢尾花数据集为例(上)
298 2
|
8月前
|
机器学习/深度学习 算法 数据可视化
分类算法入门:以鸢尾花数据集为例(下)
分类算法入门:以鸢尾花数据集为例(下)
823 2
|
8月前
|
机器学习/深度学习 分布式计算 并行计算
【机器学习】怎样在非常大的数据集上执行K-means算法?
【5月更文挑战第13天】【机器学习】怎样在非常大的数据集上执行K-means算法?

热门文章

最新文章