设计一个电影数据推荐系统,要求最后通过散点图呈现电影推荐结果,写出代码
时间: 2023-12-25 09:03:13 浏览: 59
首先,我们需要收集电影数据,并进行数据清洗和特征工程。然后,我们可以使用机器学习算法(如协同过滤、基于内容的推荐、矩阵分解等)来预测用户可能喜欢的电影,最后通过散点图呈现推荐结果。
以下是一个简单的电影推荐系统的代码示例,使用基于内容的推荐算法:
```python
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import matplotlib.pyplot as plt
# 读取电影数据
movies = pd.read_csv('movies.csv')
# 计算电影之间的相似度
tfidf = TfidfVectorizer(stop_words='english')
movies['overview'] = movies['overview'].fillna('')
tfidf_matrix = tfidf.fit_transform(movies['overview'])
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
# 定义推荐函数
def recommend_movies(title, cosine_sim=cosine_sim):
idx = movies[movies['title'] == title].index[0]
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
sim_scores = sim_scores[1:11]
movie_indices = [i[0] for i in sim_scores]
return movies.iloc[movie_indices]
# 调用推荐函数
recommended_movies = recommend_movies('The Dark Knight')
# 绘制散点图
plt.scatter(recommended_movies['vote_average'], recommended_movies['revenue'])
plt.xlabel('Vote Average')
plt.ylabel('Revenue')
plt.show()
```
上述代码中,我们使用了基于电影概述的 TF-IDF 算法来计算电影之间的相似度。然后,我们定义了一个推荐函数 `recommend_movies`,该函数接受电影名称作为输入,并返回相似度最高的十部电影。最后,我们使用 Matplotlib 绘制散点图,其中 X 轴表示电影的平均评分,Y 轴表示电影的票房收入。
阅读全文