协同过滤-找出电影的相似度

该文介绍了如何使用Python进行电影之间的相关度分析,通过Pearson和Spearman相关系数衡量电影的相似性。首先,从数据集中读取用户对电影的评分,然后创建数据透视表来整理信息。接着,计算《星球大战》与其他电影的相关度,并去除评分人数过少的电影以提高推荐准确性。最后,通过排序相关度得到最相似的电影推荐列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.理论

找出电影之间的相关度,相关度高的电影,认为它是相似电影。

相关度的衡量指标:
pearson相关系数:pearson相关系数衡量的是线性相关关系。若r=0,只能说x与y之间无线性相关关系,不能说无相关关系。相关系数的绝对值越大,相关性越强:相关系数越接近于1或-1,相关度越强,相关系数越接近于0,相关度越弱。
spearman相关系数:它是衡量两个变量的依赖性的 非参数 指标。 它利用单调方程评价两个统计变量的相关性。 如果数据中没有重复值, 并且当两个变量完全单调相关时,斯皮尔曼相关系数则为+1或−1。

1.找出电影的相似度

import pandas as pd

r_cols = ['user_id', 'movie_id', 'rating']
ratings = pd.read_csv('E:/python/python数据科学与机器学习/《Python数据科学与机器学习:从入门到实践》源代码/ml-100k/u.data', sep='\t', names=r_cols, usecols=range(3), encoding="ISO-8859-1")

m_cols = ['movie_id', 'title']
movies = pd.read_csv('E:/python/python数据科学与机器学习/《Python数据科学与机器学习:从入门到实践》源代码/ml-100k/u.item', sep='|', names=m_cols, usecols=range(2), encoding="ISO-8859-1")
# 连接两张表
ratings = pd.merge(movies, ratings)
ratings.head()
movie_id title user_id rating
0 1 Toy Story (1995) 308 4
1 1 Toy Story (1995) 287 5
2 1 Toy Story (1995) 148 4
3 1 Toy Story (1995) 280 4
4 1 Toy Story (1995) 66 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值