Skip to main content

The LensKit toolkit for recommender systems research.

Project description

Python recommendation tools

Test Suite codecov Maintainability

LensKit is a set of Python tools for experimenting with and studying recommender systems. It provides support for training, running, and evaluating recommender algorithms in a flexible fashion suitable for research and education.

LensKit for Python (LKPY) is the successor to the Java-based LensKit project.

If you use LensKit for Python in published research, please cite:

Michael D. Ekstrand. 2020. LensKit for Python: Next-Generation Software for Recommender Systems Experiments. In Proceedings of the 29th ACM International Conference on Information and Knowledge Management (CIKM '20). DOI:10.1145/3340531.3412778. arXiv:1809.03125 [cs.IR].

Installing

To install the current release with Anaconda (recommended):

conda install -c conda-forge lenskit

Or you can use pip:

pip install lenskit

To use the latest development version, install directly from GitHub:

pip install -U git+https://github.com/lenskit/lkpy

Then see Getting Started

Developing

To contribute to LensKit, clone or fork the repository, get to work, and submit a pull request. We welcome contributions from anyone; if you are looking for a place to get started, see the [issue tracker][].

Our development workflow is documented in the wiki; the wiki also contains other information on developing LensKit. User-facing documentation is at https://lkpy.lenskit.org.

We recommend using an Anaconda environment for developing LensKit. We don't maintain the Conda environment specification directly - instead, we maintain information in setup.toml to be able to generate it, so that we define dependencies and versions in one place.

conda-lock can help you set up the environment (replace linux-64 with your platform):

# install conda-lock in base environment
# alternatively: pip install conda-lock
conda install -c conda-forge conda-lock
# create the lock file for Python 3.9
conda-lock -p linux-64 -f pyproject.toml -f lkbuild/python-3.9-spec.yml
# create the environment
conda env create -n lkpy -f conda-linux-64.lock

This will create a Conda environment called lkpy with the packages required to develop and test LensKit.

We also provide support for automating some of this process through LensKit's infrastructure utilities:

invoke dev-lock

The lkbuild/boot-env.yml file defines a Conda environment with the packages necessary for the lockfile generation to work. The full set of commands:

conda env create -f lkbuild/boot-env.yml
conda activate lkboot
invoke dev-lock
conda create -n lkpy -f conda-linux-64.lock
conda activate lkpy

invoke dev-lock can optionally specify the BLAS implementation (openblas or mkl), and the Python version.

Testing Changes

You should always test your changes by running the LensKit test suite:

python -m pytest

If you want to use your changes in a LensKit experiment, you can locally install your modified LensKit into your experiment's environment. We recommend using separate environments for LensKit development and for each experiment; you will need to install the modified LensKit into your experiment's repository:

conda activate my-exp
conda install -c conda-forge flit
cd /path/to/lkpy
flit install --pth-file --deps none

You may need to first uninstall LensKit from your experiment repo; make sure that LensKit's dependencies are all still installed.

Once you have pushed your code to a GitHub branch, you can use a Git repository as a Pip dependency in an environment.yml for your experiment, to keep using the correct modified version of LensKit until your changes make it in to a release.

Resources

Acknowledgements

This material is based upon work supported by the National Science Foundation under Grant No. IIS 17-51278. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lenskit-0.14.4.tar.gz (66.1 kB view details)

Uploaded Source

Built Distribution

lenskit-0.14.4-py3-none-any.whl (74.0 kB view details)

Uploaded Python 3

File details

Details for the file lenskit-0.14.4.tar.gz.

File metadata

  • Download URL: lenskit-0.14.4.tar.gz
  • Upload date:
  • Size: 66.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for lenskit-0.14.4.tar.gz
Algorithm Hash digest
SHA256 8a90f85d164d04e48cd41f32c0225f8150142ae3f4d2f5da8403f573731efe9d
MD5 5e1fc766ab683ef026782abdfdfd5011
BLAKE2b-256 53af1fae4eaeda89402f8af83084cd2cf1013697c81d5e70925f475dbf00fc81

See more details on using hashes here.

File details

Details for the file lenskit-0.14.4-py3-none-any.whl.

File metadata

  • Download URL: lenskit-0.14.4-py3-none-any.whl
  • Upload date:
  • Size: 74.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for lenskit-0.14.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c6952b75816a2338a6771949ddab72780bf5f7c7fbc263912de2e801364f273c
MD5 11fd433833e85b3850cf21adf25c2095
BLAKE2b-256 90ec63a061f668b86fae24351b5eed1466ac0bbc2d482d4362a9e1f48089a9f4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page