基于用户的协同过滤使用余弦相似度电影推荐系统的Python代码,使用MovieLens数据集
时间: 2024-02-24 19:53:50 浏览: 78
实现一个电影推荐系统,采用协同过滤算法,相似度算法为余弦相似度.zip
好的,以下是基于用户的协同过滤使用余弦相似度电影推荐系统的Python代码,使用MovieLens数据集:
```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)
```
注意:上述代码仅作为示例,实际应用时需要根据具体情况进行调整和优化。
阅读全文