[PR #825] [MERGED] Add surprise #16777

Closed
opened 2026-05-11 13:57:29 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/vinta/awesome-python/pull/825
Author: @NicolasHug
Created: 1/30/2017
Status: Merged
Merged: 1/31/2017
Merged by: @vinta

Base: masterHead: master


📝 Commits (1)

📊 Changes

1 file changed (+1 additions, -0 deletions)

View changed files

📝 README.md (+1 -0)

📄 Description

Disclaimer: I'm the author of surprise ;)

What is this Python project?

Surprise is a Python scikit building and analysing recommender systems.

Main features:

What's the difference between this Python project and similar ones?

  • According to any google search, crab is the go-to package for RS. But it actually only has one prediction algorithm (k-NN), no evaluation tools, no doc, and has been dead for three years.
  • The second most popular package I think is Recsys. Provides with two prediction algorithms (k-NN and SVD) but is also unmaintained. Evaluation tools are very minimal.
  • There's GraphLab, which is not free and needs license registration. I've heard good feedback about it, but never used it.
  • LightFM. This package is focused on a specific set of algorithms (all Boolean-valued) and does not provide with other classical approaches.

I think what makes Surprise is it's doc, the variety of prediction algorithms and the ability to evaluate the performances of algorithms easily (cross-validation, GridSearch, etc.). This makes it a useful tool to get your hands dirty quickly with recommender systems.

--

Anyone who agrees with this pull request could vote for it by adding a 👍 to it, and usually, the maintainer will merge it when votes reach 20.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/vinta/awesome-python/pull/825 **Author:** [@NicolasHug](https://github.com/NicolasHug) **Created:** 1/30/2017 **Status:** ✅ Merged **Merged:** 1/31/2017 **Merged by:** [@vinta](https://github.com/vinta) **Base:** `master` ← **Head:** `master` --- ### 📝 Commits (1) - [`9f161de`](https://github.com/vinta/awesome-python/commit/9f161deb04f4716810374912cb04b997b70f802e) Add surprise ### 📊 Changes **1 file changed** (+1 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+1 -0) </details> ### 📄 Description Disclaimer: I'm the author of surprise ;) ## What is this Python project? [Surprise](http://surpriselib.com) is a Python [scikit](https://www.scipy.org/scikits.html) building and analysing recommender systems. **Main features**: - Give the user perfect control over his experiments. To this end, a strong emphasis is laid on [documentation](http://surprise.readthedocs.io/en/latest/index.html), which we have tried to make as clear and precise as possible by pointing out every details of the algorithms. - Alleviate the pain of [Dataset handling](http://surprise.readthedocs.io/en/latest/getting_started.html#load-a-custom-dataset). Users can use both *built-in* datasets ([Movielens](http://grouplens.org/datasets/movielens/), [Jester](http://eigentaste.berkeley.edu/dataset/)), and their own *custom* datasets. - Provide various ready-to-use [prediction algorithms](http://surprise.readthedocs.io/en/latest/prediction_algorithms_package.html) such as [baseline algorithms](http://surprise.readthedocs.io/en/latest/basic_algorithms.html), [neighborhood methods](http://surprise.readthedocs.io/en/latest/knn_inspired.html), matrix factorization-based ( [SVD](http://surprise.readthedocs.io/en/latest/matrix_factorization.html#surprise.prediction_algorithms.matrix_factorization.SVD), [PMF](http://surprise.readthedocs.io/en/latest/matrix_factorization.html#unbiased-note), [SVD++](http://surprise.readthedocs.io/en/latest/matrix_factorization.html#surprise.prediction_algorithms.matrix_factorization.SVDpp), [NMF](http://surprise.readthedocs.io/en/latest/matrix_factorization.html#surprise.prediction_algorithms.matrix_factorization.NMF)), and [many others](http://surprise.readthedocs.io/en/latest/prediction_algorithms_package.html). Also, various [similarity measures](http://surprise.readthedocs.io/en/latest/similarities.html) (cosine, MSD, pearson...) are built-in. - Make it easy to implement [new algorithm ideas](http://surprise.readthedocs.io/en/latest/building_custom_algo.html). - Provide tools to [evaluate](http://surprise.readthedocs.io/en/latest/evaluate.html), [analyse](http://nbviewer.jupyter.org/github/NicolasHug/Surprise/tree/master/examples/notebooks/KNNBasic_analysis.ipynb/) and [compare](http://nbviewer.jupyter.org/github/NicolasHug/Surprise/blob/master/examples/notebooks/Compare.ipynb) the algorithms performance. Cross-validation procedures can be run very easily, as well as [exhaustive search over a set of parameters](http://surprise.readthedocs.io/en/latest/getting_started.html#tune-algorithm-parameters-with-gridsearch). ## What's the difference between this Python project and similar ones? - According to any google search, [crab](https://muricoca.github.io/crab/) is the go-to package for RS. But it actually only has one prediction algorithm (k-NN), no evaluation tools, no doc, and has been dead for three years. - The second most popular package I think is [Recsys](https://github.com/ocelma/python-recsys). Provides with two prediction algorithms (k-NN and SVD) but is also unmaintained. Evaluation tools are very minimal. - There's [GraphLab](https://turi.com/), which is not free and needs license registration. I've heard good feedback about it, but never used it. - [LightFM](http://lyst.github.io/lightfm/docs/index.html). This package is focused on a specific set of algorithms (all Boolean-valued) and does not provide with other classical approaches. I think what makes [Surprise](http://surpriselib.com) is it's doc, the variety of prediction algorithms and the ability to evaluate the performances of algorithms easily (cross-validation, GridSearch, etc.). This makes it a useful tool to get your hands dirty quickly with recommender systems. -- Anyone who agrees with this pull request could vote for it by adding a :+1: to it, and usually, the maintainer will merge it when votes reach **20**. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-11 13:57:29 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/awesome-python#16777