python协同过滤算法实现电影推荐

本文介绍了一个简单的Python代码,演示了如何使用协同过滤算法根据用户的历史电影评分来推荐相似的电影。代码包括计算用户间相似度和基于相似度推荐电影的功能。
摘要由CSDN通过智能技术生成

协同过滤是一种常用的推荐算法,它基于用户的历史行为和其他用户的行为进行推荐。在电影推荐中,协同过滤算法可以根据用户对电影的评分来推荐相似的电影给用户。

下面是一个简单的Python代码实现电影推荐的协同过滤算法:

import numpy as np

# 电影评分数据
ratings = {
    'Alice': {'Transformers': 3, 'Star Wars': 4, 'The Dark Knight': 5},
    'Bob': {'Transformers': 4, 'Star Wars': 3, 'The Dark Knight': 2},
    'Charlie': {'Transformers': 5, 'Star Wars': 2, 'The Dark Knight': 4},
    'Dave': {'Transformers': 2, 'Star Wars': 5, 'The Dark Knight': 3},
    'Eve': {'Transformers': 3, 'Star Wars': 4, 'The Dark Knight': 1}
}

# 计算用户之间的相似度
def similarity(user1, user2):
    movies1 = ratings[user1]
    movies2 = ratings[user2]
    
    # 计算共同评分的电影数量
    common_movies = set(movies1.keys()) & set(movies2.keys())
    
    # 如果没有共同评分的电影,返回0
    if len(common_movies) == 0:
        return 0
    
    # 计算用户之间的相似度
    sum_of_squares = sum([(movies1[movie] - movies2[movie])**2 for movie in common_movies])
    return 1 / (1 + np.sqrt(sum_of_squares))

# 根据用户的历史评分进行电影推荐
def recommend_movies(user):
    similarity_scores = [(other_user, similarity(user, other_user)) for other_user in ratings if other_user != user]
    
    # 按相似度降序排序
    similarity_scores.sort(key=lambda x: x[1], reverse=True)
    
    # 取相似度最高的用户
    most_similar_user = similarity_scores[0][0]
    
    # 获取相似用户的电影评分
    recommended_movies = {movie: rating for movie, rating in ratings[most_similar_user].items() if movie not in ratings[user]}
    
    return recommended_movies

# 测试代码
user = 'Alice'
recommendations = recommend_movies(user)
print(f"Recommended movies for {user}: {recommendations}")

运行以上代码,将会输出Alice用户的电影推荐结果。

注意:以上代码仅是一个简单的示例,实际应用中还需要考虑更多的因素,如用户的兴趣偏好、电影的类型等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷爱码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值