推荐系统的易于使用的库。
scikit-surprise的Python项目详细描述
惊喜
概述
Surprise是一条Python scikit建立和分析推荐者 系统。
Surprise是用 牢记以下目的:
- 让用户完全控制他们的实验。为此,强者 重点是 documentation,我们 通过指出 算法的详细信息。
- 减轻Dataset handling的痛苦。 用户可以同时使用内置的数据集 (Movielens, Jester),以及他们自己的custom 数据集。
- 提供各种现成的prediction algorithms 例如baseline algorithms, neighborhood methods,矩阵 基于因式分解( SVD, PMF, SVD++, NMF, 和many others。 还有,各种各样的similarity measures (cosine,msd,pearson…)是内置的。
- 使其易于实现new algorithm ideas。
- 为evaluate提供工具, analyse 和 compare 算法性能。交叉验证过程可以非常 易于使用功能强大的cv迭代器(灵感来自 scikit-learn优秀的工具),以及 exhaustive search over a set of parameters。
名称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 examples在 documentation 。
基准
下面是各种算法的平均rmse、mae和总执行时间 (使用默认参数)在5倍交叉验证过程中。这个 数据集是Movielens100k和 一百万个数据集。所有算法的折叠都是相同的。所有的实验都是 在带有Intel Core i5第7代(2.5 GHz)和8GO RAM的笔记本电脑上运行。守则 生成这些表可以在benchmark example中找到。
Movielens 100k | RMSE | MAE | Time |
---|---|---|---|
SVD | 0.934 | 0.737 | 0:00:11 |
SVD++ | 0.92 | 0.722 | 0:09:03 |
NMF | 0.963 | 0.758 | 0:00:15 |
Slope One | 0.946 | 0.743 | 0:00:08 |
k-NN | 0.98 | 0.774 | 0:00:10 |
Centered k-NN | 0.951 | 0.749 | 0:00:10 |
k-NN Baseline | 0.931 | 0.733 | 0:00:12 |
Co-Clustering | 0.963 | 0.753 | 0:00:03 |
Baseline | 0.944 | 0.748 | 0:00:01 |
Random | 1.514 | 1.215 | 0:00:01 |
Movielens 1M | RMSE | MAE | Time |
---|---|---|---|
SVD | 0.873 | 0.686 | 0:02:13 |
SVD++ | 0.862 | 0.673 | 2:54:19 |
NMF | 0.916 | 0.724 | 0:02:31 |
Slope One | 0.907 | 0.715 | 0:02:31 |
k-NN | 0.923 | 0.727 | 0:05:27 |
Centered k-NN | 0.929 | 0.738 | 0:05:43 |
k-NN Baseline | 0.895 | 0.706 | 0:05:55 |
Co-Clustering | 0.915 | 0.717 | 0:00:31 |
Baseline | 0.909 | 0.719 | 0:00:19 |
Random | 1.504 | 1.206 | 0:00:19 |
安装
使用pip(需要numpy和c编译器。窗户 用户可能更喜欢使用conda):
$ pip install numpy
$ pip install scikit-surprise
有条件时:
$ conda install -c conda-forge scikit-surprise
对于最新版本,还可以克隆repo并构建源 (你首先需要Cython和 numpy):
$ 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(请 不要给我发电子邮件,因为其他用户没有记录)。