基于用户的协同过滤使用余弦相似度电影推荐系统的Python代码,使用MovieLens数据集,为用户推荐电影的Python代码
时间: 2024-02-24 20:53:51 浏览: 68
好的,以下是基于用户的协同过滤使用余弦相似度电影推荐系统的Python代码,使用MovieLens数据集,为用户推荐电影的Python代码:
```python
import pandas as pd
import numpy as np
# 读取数据集
ratings = pd.read_csv('ratings.csv')
movies = pd.read_csv('movies.csv')
# 合并数据集
ratings = pd.merge(ratings, movies, on='movieId')
# 计算用户评分矩阵
userRatings = ratings.pivot_table(index=['userId'], columns=['title'], values='rating')
# 填充缺失值
userRatings = userRatings.fillna(0)
# 计算余弦相似度
from sklearn.metrics.pairwise import cosine_similarity
userSimilarity = cosine_similarity(userRatings)
# 定义函数,返回与目标用户最相似的K个用户
def topKSimilarUsers(user, K):
simUsers = userSimilarity[user]
simUsers = simUsers.argsort()[::-1]
return simUsers[1:K+1]
# 定义函数,根据最相似的K个用户推荐电影
def recommendMovies(user, K):
simUsers = topKSimilarUsers(user, K)
simUsersRatings = userRatings.iloc[simUsers]
meanRatings = simUsersRatings.mean(axis=0)
moviesToRecommend = meanRatings.sort_values(ascending=False)
return moviesToRecommend.index.tolist()
# 示例:为用户1推荐10部电影
user = 1
K = 10
recommendedMovies = recommendMovies(user, K)
print(recommendedMovies)
```
在示例中,我们为用户1推荐了10部电影。可以根据需要自行修改用户编号和推荐数量。推荐结果为一个电影名称的列表,按照推荐程度从高到低排列。
阅读全文