python基于协同过滤的智能推荐根据物品推荐电影具体代码
时间: 2023-09-16 07:10:07 浏览: 92
好的,下面是一个基于协同过滤算法的电影推荐示例代码:
```python
import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
# 加载数据
ratings = pd.read_csv('ratings.csv')
movies = pd.read_csv('movies.csv')
# 构建用户-电影评分矩阵
ratings_matrix = ratings.pivot_table(index=['userId'], columns=['movieId'], values='rating')
# 计算电影相似度
movie_similarity = cosine_similarity(ratings_matrix.T)
# 定义推荐函数
def get_movie_recommendations(movie_name, topN=5):
# 获取该电影的索引
movie_idx = movies[movies['title'] == movie_name].index[0]
# 获取该电影与其他电影的相似度
movie_similarities = movie_similarity[movie_idx]
# 获取与该电影相似度最高的topN个电影
similar_movie_indices = np.argsort(-movie_similarities)[1:topN+1]
# 获取电影名和相似度
similar_movies = [(movies.loc[i].title, movie_similarities[i]) for i in similar_movie_indices]
return similar_movies
# 测试推荐函数
get_movie_recommendations('Toy Story', topN=5)
```
在上面的代码中,我们首先加载了包含电影评分数据和电影信息的csv文件。然后,我们根据用户-电影评分数据构建了一个用户-电影评分矩阵,并使用余弦相似度计算了电影之间的相似度。接着,我们定义了一个名为 `get_movie_recommendations` 的函数,用于推荐与给定电影相似度最高的topN个电影。该函数接受两个参数,第一个参数 `movie_name` 是电影的名称,第二个参数 `topN` 是要推荐的电影数量。在函数中,我们首先找到该电影的索引,然后计算该电影与其他电影的相似度,并选出与该电影相似度最高的topN个电影。最后,函数返回电影名和相似度的元组列表,表示推荐的电影及其与给定电影的相似度。在测试中,我们调用 `get_movie_recommendations` 函数,传入电影名和要推荐的电影数量,获取推荐的电影列表。
阅读全文