Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
django-slopeone =============== Generates rating predictions based on the Slope One algorithm. The rating predictions can be used for recommendations. You can check out the following links about the Slope One algorithm: - http://en.wikipedia.org/wiki/Slope_One - http://www.daniel-lemire.com/fr/documents/publications/lemiremaclachlan_sdm05.pdf Note: This project is under development and things will most likely change. Don't use it in production systems. Installation ------------ You need Django 1.1. 1. Run `setup.py install` 2. Put `slopeone` in `INSTALLED_APPS` 3. Run `manage.py syncdb` Usage ----- 1. Add some ratings to the `Rating` table. You can use the admin for that. 2. Run the `manage.py update_calculations` command 3. In your view, import `slopeone.core.recommend` and execute it with the user for which the recommendations should be generated. The `recommend` method will return a list of recommendations. The output looks like this: [(2, 5.0), (1, 3.0)] Each element is a pair consisting of the recommended object id and the predicted rating. In this case, the predicted rating for item 2 is 5.0 and for item 1 it's 3.0. The list is sorted descending by rating. Example Project --------------- If you cloned the git repo, you can use the `testproject` to test this project. The testproject includes 2 users and 3 rated (animal) fixtures. Here are some usage instructions: (0. You need the `slopeone` module installed/in your pythonpath.) 1. Run `manage.py syncdb` in the `testproject` dir but don't create a superuser. 2. Load the fixtures by executing `manage.py loaddata fixtures/*`. (username==password for the user fixtures) The following ratings have been added: =User | =Cat | =Dog -------------------- admin | 5 | 3 -------------------- arthur | ? | 4 3. Run the `manage.py update_calculations` command, to compute all required values. 4. To compute the predicted rating for the user `arthur` and the animal object `cat`, you can run the `manage.py show_recommendations` command with the user id 2 as an argument: ./manage.py show_recommendations 2 $ [(2, 6.0), (1, 4.0)] As you see, the predicted rating for arthur/cat would be 6.0. This is because there is only one other user (admin), and he rated cat with 5 and dog with 3. So the global difference between dog and cat rating is +2. Since arthur rated dog with 4, the prediction will apply the difference of the global cat/dog rating to the value of the dog rating. So that 4+2=6. The rating for the object with the id 1 is not computed since the user has manually rated that object. Rated items are currently not excluded from the return value of the recommend method. Known Issues ------------ - Items that were already rated by the user are returned in the recommendations. They should be excluded. - Ratings don't have a maximum value (to, for example, support ratings from a range from 1-5) - Although the contenttypes framework is used, django-slopeone currently only supports one content type.