推荐系统的易于使用的库。

scikit-surprise的Python项目详细描述


GitHub versionDocumentation StatusBuild Statuspython versionsLicense

惊喜

概述

Surprise是一条Python scikit建立和分析推荐者 系统。

Surprise是用 牢记以下目的

名称surprise(大致:)代表简单的python推荐 系统引擎。

开始,示例

下面是一个简单的示例,演示如何(向下)加载数据集,并将其拆分为 5倍交叉验证,并计算 SVD 算法。

fromsurpriseimportSVDfromsurpriseimportDatasetfromsurprise.model_selectionimportcross_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        0.9311  0.9370  0.9320  0.9317  0.9391  0.9342  0.0032         
MAE         0.7350  0.7375  0.7341  0.7342  0.7375  0.7357  0.0015         
Fit time    6.53    7.11    7.23    7.15    3.99    6.40    1.23           
Test time   0.26    0.26    0.25    0.15    0.13    0.21    0.06 

Surprise可以做很多更多(例如, GridSearchCV)! 你会发现more usage examplesdocumentation

基准

下面是各种算法的平均rmse、mae和总执行时间 (使用默认参数)在5倍交叉验证过程中。这个 数据集是Movielens100k和 一百万个数据集。所有算法的折叠都是相同的。所有的实验都是 在带有Intel Core i5第7代(2.5 GHz)和8GO RAM的笔记本电脑上运行。守则 生成这些表可以在benchmark example中找到。

Movielens 100kRMSEMAETime
SVD0.9340.7370:00:11
SVD++0.920.7220:09:03
NMF0.9630.7580:00:15
Slope One0.9460.7430:00:08
k-NN0.980.7740:00:10
Centered k-NN0.9510.7490:00:10
k-NN Baseline0.9310.7330:00:12
Co-Clustering0.9630.7530:00:03
Baseline0.9440.7480:00:01
Random1.5141.2150:00:01
Movielens 1MRMSEMAETime
SVD0.8730.6860:02:13
SVD++0.8620.6732:54:19
NMF0.9160.7240:02:31
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

安装

使用pip(需要numpy和c编译器。窗户 用户可能更喜欢使用conda):

$ pip install numpy
$ pip install scikit-surprise

有条件时:

$ conda install -c conda-forge scikit-surprise

对于最新版本,还可以克隆repo并构建源 (你首先需要Cythonnumpy):

$ pip install numpy cython
$ git clone https://github.com/NicolasHug/surprise.git
$ cd surprise
$ python setup.py install

许可证

这个项目是根据BSD 3-Clause许可证授权的,因此它可以 用于几乎所有的事情,包括商业应用。请让 我们知道Surprise对你有多有用!

如果你需要在研究论文中引用惊奇的话,这里有一个bibtex条目 (请随时通知我们,我们很想知道惊喜是否对您有帮助):

@Misc{Surprise,
author =   {Hug, Nicolas},
title =    { {S}urprise, a {P}ython library for recommender systems},
howpublished = {\url{http://surpriselib.com}},
year = {2017}
}

贡献者

以下人员对Surprise作出了贡献:

查尔斯·艾曼纽尔·迪亚斯、德梅林、弗兰克杰、卢卡斯·加尔克, 皮埃尔·弗朗索瓦·吉梅内兹,尼古拉斯·怀格,刘恒基,马赫尔·马拉布,马诺杰·K, Naturale0、NJU Luke、Skywhat、David Stevens、Mike Lee Williams、Chenchen Xu, 耀州1918。

非常感谢:)!

贡献、反馈、联系

任何形式的反馈/批评都将非常感谢(软件设计, 文档、改进思路、拼写错误等)。

如果您希望看到在 Surprise请告诉我们!

请随意贡献(参见 guidelines) 并发送请求!

对于有关Surprise的错误、问题或问题,您可以 使用githubproject page(请 不要给我发电子邮件,因为其他用户没有记录)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法从组合框中选择值。需要JS替代方案   打印带有规范问题的Java打印程序?   使用Xmodem传输文件内容时的附加ASCII字符的java传输   java JAXB通过socket和流读取器块   java“错误:在类Grad中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)”   如何在Java中将图像从彩色转换为黑白(灰度)   java如何使用Google云连接服务器发送上游GCM消息   JAVA中的JSON文件字段交叉点   什么是“搜索:{…}”/Java中正式使用的“中断搜索”语法?   由于明显的类路径冲突导致java ToDiscoverable强制转换错误?   java可以成为一种语言。类文件不能添加到URLClassLoader的urlpath   Android设备上会话管理的java最佳实践   Java8Java上的Google应用程序引擎。开发服务器上的时间不可用?   java Derby数据库导出为单个文件?   java如何让jmeter根据访问日志行中的时间戳进行日志重放   访问EJB分离接口时的java IllegalAccessException   java使用JsonPath在不知道密钥的情况下提取值   java将文件保存到Jersey API中的服务器应用程序目录   jsoup中的java Http异常   java有没有错误?