Py之scikit-surprise:scikit-surprise的简介、安装、使用方法之详细攻略

2023-12-14 10:12

本文主要是介绍Py之scikit-surprise:scikit-surprise的简介、安装、使用方法之详细攻略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Py之scikit-surprise:scikit-surprise的简介、安装、使用方法之详细攻略

目录

scikit-surprise的简介

1、基准测试

Movielens 100k

Movielens 1M

scikit-surprise的安装

scikit-surprise的使用方法

1、基础用法

(1)、简单的示例,展示如何(下)载数据集,将其拆分为5折交叉验证,并计算SVD算法的MAE和RMSE


scikit-surprise的简介

Surprise,Simple Python RecommendatIon System Engine,是一个用于构建和分析处理显式评分数据的Python scikit推荐系统工具。Surprise的设计目的包括:

>> 为用户提供对实验的完全控制。为此,我们强调文档,试图通过指出算法的每个细节使其尽可能清晰和精确。

>> 缓解数据集处理的痛苦。用户可以使用内置数据集(Movielens、Jester)和自定义数据集。

>> 提供各种可用的预测算法,如基线算法、邻域方法、基于矩阵分解的算法(SVD、PMF、SVD++、NMF)等。此外,还内置了各种相似度度量(余弦、MSD、皮尔逊等)。

>> 使新算法思路的实现变得简单

>> 提供评估、分析和比较算法性能的工具。可以使用强大的CV迭代器(受scikit-learn优秀工具启发)轻松运行交叉验证过程,以及对一组参数进行详尽搜索。

请注意,Surprise不支持隐式评分或基于内容的信息。

1、基准测试

以下是各种算法(使用默认参数)在5折交叉验证过程中的平均RMSE、MAE和总执行时间。数据集包括Movielens 100k和1M数据集,所有算法使用相同的折叠。所有实验在一台搭载Intel i5第11代2.60GHz处理器的笔记本电脑上运行。生成这些表格的代码可以在基准测试示例中找到。

Movielens 100k

Movielens 100kRMSEMAETime
SVD0.9340.7370:00:06
SVD++ (cache_ratings=False)0.9190.7210:01:39
SVD++ (cache_ratings=True)0.9190.7210:01:22
NMF0.9630.7580:00:06
Slope One0.9460.7430:00:09
k-NN0.980.7740:00:08
Centered k-NN0.9510.7490:00:09
k-NN Baseline0.9310.7330:00:13
Co-Clustering0.9630.7530:00:06
Baseline0.9440.7480:00:02
Random1.5181.2190:00:01

Movielens 1M

Movielens 1MRMSEMAETime
SVD0.8730.6860:01:07
SVD++ (cache_ratings=False)0.8620.6720:41:06
SVD++ (cache_ratings=True)0.8620.6720:34:55
NMF0.9160.7230:01:39
Slope One0.9070.7150:02:31
k-NN0.9230.7270:05:27
Centered k-NN0.9290.7380:05:43
k-NN Baseline0.8950.7060:05:55
Co-Clustering0.9150.7170:00:31
Baseline0.9090.7190:00:19
Random1.5041.2060:00:19

scikit-surprise的安装

pip install numpy
pip install scikit-surprise
pip install -i https://mirrors.aliyun.com/pypi/simple scikit-surprise或者利用conda
conda install -c conda-forge scikit-surprise或者从最新的源代码构建
pip install numpy cython
git clone https://github.com/NicolasHug/surprise.git
cd surprise
python setup.py install

scikit-surprise的使用方法

1、基础用法

(1)、简单的示例,展示如何(下)载数据集,将其拆分为5折交叉验证,并计算SVD算法的MAE和RMSE


from surprise import SVD
from surprise import Dataset
from surprise.model_selection import cross_validate# Load the movielens-100k dataset (download it if needed).
data = Dataset.load_builtin('ml-100k')# Use the famous SVD algorithm.
algo = SVD()# Run 5-fold cross-validation and print results.
cross_validate(algo, data, measures=['RMSE', 'MAE'], cv=5, verbose=True)


Evaluating RMSE, MAE of algorithm SVD on 5 split(s).Fold 1  Fold 2  Fold 3  Fold 4  Fold 5  Mean    Std     
RMSE (testset)    0.9367  0.9355  0.9378  0.9377  0.9300  0.9355  0.0029  
MAE (testset)     0.7387  0.7371  0.7393  0.7397  0.7325  0.7375  0.0026  
Fit time          0.62    0.63    0.63    0.65    0.63    0.63    0.01    
Test time         0.11    0.11    0.14    0.14    0.14    0.13    0.02    

这篇关于Py之scikit-surprise:scikit-surprise的简介、安装、使用方法之详细攻略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接