本文主要是介绍基于Python和Surprise库搭建推荐系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家好,在数据时代,推荐系统是提升用户体验的重要工具,今天我们将介绍如何使用亚马逊的电影评分数据集创建电影推荐系统。
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 }")
这篇关于基于Python和Surprise库搭建推荐系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!