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

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第三方库


热门话题
javascript点击文本(文本链接到web url)如何打开   java将一个按钮替换为另一个按钮   J2ME上的java音频,我不知道哪里出了问题?   java异常仅在调试+断点中引发   图形按钮文本在4Gb Ram和IBM Java 1.5中消失   java如何在输入错误的用户名和/或密码时将用户从登录控件重定向到错误页面?   java对象的计算时代有什么好处?   加密限制了应用程序功能的启动   swing只有在我移动鼠标时才会显示组件。帮助(爪哇)   使用Spring进行java密码加密/解密   Java8Java。时间:如何更改一周中的某一天和一天的开始时间?   java Android:设置文本视图中来自另一个活动的文本不起作用   如何在java中创建ActionEvent类的对象?   java Tomcat 7和无效的密钥库格式   GWT面板类型的java问题   字符输入java中的异常   带有文件输出的java JOptionPane   java Kotlin泛型声明站点方差<在T>构造中   java是非对话框,带进度