基于 Python 和Surprise库,新手轻松搭建推荐系统

2023-12-25 14:28

本文主要是介绍基于 Python 和Surprise库,新手轻松搭建推荐系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解密基于用户的推荐系统。

1、简介

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

2、数据加载与探索

首先,通过加载和探索数据集开启数据分析过程。首先导入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 )

3、数据清洗和预处理

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

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

4、深入分析浏览量和评分

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

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

5、计算平均评分

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

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

6、建立推荐模型:SVD算法

  1. 格式化数据供Surprise使用: 通过准备数据以供Surprise库使用来为推荐做好准备。
from surprise import Reader , Dataset
reader = Reader ( rating_scale =(-1, 10))
data = Dataset . load_from_df ( melt_df . fillna (0) , reader )
  1. 模型训练与评估: 该系统的开发目的是根据用户的偏好来推荐电影,推荐系统的首选工具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 )
  1. 进行预测: 现在,使用SVD算法进行预测,该算法是进行矩阵因式分解的强大工具,用于预测用户对电影的评分。
user_id = ’ A1CV1WROP5KTTW ’
movie = ’Movie6 ’
rating = 5
algo . predict ( user_id , movie , r_ui = rating )

结果如下所示:

图片

7、结论(模型应用)

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

8、教育示例

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

  1. 数据集:
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 ()
  1. 分析资源受欢迎程度:

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

resource_popularity = education_filtered . groupby
’resource_id ’). sum ()
most_popular_resource =
resource_popularity [’rating ’]. idxmax ()
print (" Most_popular_resource :
{ most_popular_resource }")
  1. 建立教育推荐模型:

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

resource_popularity =
education_filtered . groupby (’ resource_id ’). sum ()
most_popular_resource =
resource_popularity [’rating ’]. idxmax ()
print (" Most _popular _resource :{ most_popular_resource }")
  1. 推荐教育资源:

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

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 }")

可以在Github上查看源代码和数据集。

【Github】: https://github.com/chukolate007/amazon-user-based-recommendation-system

技术交流&材料获取

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

资料干货、资料分享、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:dkl88194,备注:来自CSDN + 资料
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复: 资料

1、数据分析实战宝典
在这里插入图片描述

2、100个超强算法模型

我们打造了《100个超强算法模型》,特点:从0到1轻松学习,原理、代码、案例应有尽有,所有的算法模型都是按照这样的节奏进行表述,所以是一套完完整整的案例库。

很多初学者是有这么一个痛点,就是案例,案例的完整性直接影响同学的兴致。因此,我整理了 100个最常见的算法模型,在你的学习路上助推一把!
在这里插入图片描述

这篇关于基于 Python 和Surprise库,新手轻松搭建推荐系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/535832

相关文章

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

Java调用Python的四种方法小结

《Java调用Python的四种方法小结》在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果,本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法,希望对大家有... 目录一、在Java类中直接执行python语句二、在Java中直接调用Python脚本三、使用Run

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文