基于Python和Surprise库搭建推荐系统

2023-12-13 06:52:51

大家好,在数据时代,推荐系统是提升用户体验的重要工具,今天我们将介绍如何使用亚马逊的电影评分数据集创建电影推荐系统。

1.数据加载与探索

首先,通过加载和探索数据集开启数据分析过程,导入Pandas和Numpy,这是进行数据处理的基础库。通过检查数据集的前几行、形状、大小和统计摘要进行探索。.head()方法可以让我们一窥数据集的全貌,而.shape方法则展示了数据集的大小。

import?pandas?as?pd
import?numpy?as?np?
amazon?=?pd.?read_csv?("?path_to?/?Amazon?.?csv")
print?(?amazon?.?head?()
print?("?Dataset???shape?:",?amazon?.?shape?)

2.数据清洗和预处理

为了确保分析的完整性,必须替换缺失值并完善DataFrame。fillna方法可用于处理缺失值,这对于保持数据完整性至关重要,删除不相关的列(如'user_id')可以使分析集中在电影评分上。

Amazon_filtered?=?amazon?.?fillna?(?value?=0)
Amazon_filtered1?=?Amazon_filtered?.?drop?(?columns?=’user_id?’)

3.深入分析浏览量和评分

通过分析浏览量,分析电影的受欢迎程度,这涉及对评分进行求和并找到最大值。按电影对评分进行求和可以得到一个受欢迎度指标,argmax()函数可以识别出观看次数最多的电影。

Amazon_max_views?=?Amazon_filtered1?.sum?()
max_views_index?=?Amazon_max_views?.?argmax?()
print?("?Most_viewed?_movie?_index?:",?max_views_index?)

4.计算平均评分

通过计算电影的平均评分,可以了解观众的总体满意度。

average_ratings?=?Amazon_max_views?.?mean?()
print?("?Average_rating?:",?average_ratings?)

5.建立推荐模型:SVD算法

5.1 格式化数据供Surprise使用

通过准备数据以供Surprise库使用来为推荐做好准备。

from?surprise?import?Reader?,?Dataset
reader?=?Reader?(?rating_scale?=(-1,?10))
data?=?Dataset?.?load_from_df?(?melt_df?.?fillna?(0)?,?reader?)

5.2 模型训练与评估

该系统的开发目的是根据用户的偏好来推荐电影,推荐系统的首选工具Surprise库。

from?surprise?import?SVD
from?surprise.model_selection?import?train_test_split?,
cross_validate
trainset?,?testset?=?train_test_split?(data?,?test_size?=0.25)
algo?=?SVD?()
algo?.?fit(?trainset?)
predictions?=?algo?.?test?(?testset?)
cross_validate?(algo?,?data?,?measures?=[?’RMSE?’,?’MAE?’],?cv?=3,
verbose?=?True?)

5.3 进行预测

使用SVD算法进行预测,该算法是进行矩阵因式分解的强大工具,用于预测用户对电影的评分。

user_id?=?’?A1CV1WROP5KTTW?’
movie?=?’Movie6?’
rating?=?5
algo?.?predict?(?user_id?,?movie?,?r_ui?=?rating?)

结果如下所示:

图片

6.模型应用

这个脚本不仅揭示了亚马逊电影评分数据的复杂性,还提供了一个多功能的分析工具包。这里的方法也可以适用于各种数据场景。例如,在教育领域,类似的推荐系统可以推荐个性化的学习材料、课程甚至课外活动,从而提高学生的参与度和学习效果。

7.教育示例

利用Surprise库,根据学生的偏好推荐教育资源。

数据集如下:

import?pandas?as?pd
#?假设'education_data.csv'包含列'student_id'、'resource_id'和'rating'
education_data?=?pd.?read_csv?("?path_to?/?education_data?.?csv")
print?(?education_data?.?head?()

分析资源受欢迎程度,找出最受欢迎或评分最高的教育资源。

resource_popularity?=?education_filtered?.?groupby
’resource_id?’).?sum?()
most_popular_resource?=
resource_popularity?[’rating?’].?idxmax?()
print?("?Most_popular_resource?:
{?most_popular_resource?}")

利用Surprise库,根据用户偏好推荐教育资源。

resource_popularity?=
education_filtered?.?groupby?(’?resource_id?’).?sum?()
most_popular_resource?=
resource_popularity?[’rating?’].?idxmax?()
print?("?Most?_popular?_resource?:{?most_popular_resource?}")

针对特定学生和教育资源预测评分,展示该模型在教育环境中的适用性。

Student_id?=?’student123?’
resource?=?’course456?’
predicted_rating?=?algo?.?predict?(?Student_id?,?resource?).?est
print?("?Predicted_rating_for_resource
{?resource?}_by_user_{?user_id?}:{?predicted_rating?}")

文章来源:https://blog.csdn.net/csdn1561168266/article/details/134961689
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。