Lenskit

Latest version: v0.14.4

Safety actively analyzes 702662 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 6

0.10.0

Highlights of this release are significant improvements to parallel processing (we no longer use joblib), shared memory, and our first TensorFlow integrations.

What’s Changed

* Reorganize and improve documentation (169) mdekstrand
* Improve RecListAnalysis performance and parallelize (164) mdekstrand
* Make persistence configurable & reduce open file count (165) mdekstrand
* Fix Python versions and conda environments in CI builds (163) mdekstrand
* Add TensorFlow support (159) mdekstrand
* Improve parallel configuration and docs (161) mdekstrand
* Use setup.cfg for all dev deps, including in Conda (160) mdekstrand
* Add fit_transform API to Bias (158) mdekstrand
* Remove dead code and add tests (157) mdekstrand
* Add scikit-learn SVD (156) mdekstrand
* Remove old sharing and file APIs (155) mdekstrand
* Use ProcessPoolExecutor instead of joblib (154) mdekstrand
* Add 'persist' API to sharing (153) mdekstrand

0.9.0

This release has some performance and improvements, including full Python 3.8, Pandas 1.0, and Numba 0.49 testing.

This is the **last** release we expect to use JobLib to parallelize batch prediction and recommendation. Any Python scripts that call the batch routines (`batch.predict`, `batch.recommend`, or `MultiEval`) need to be *import-protected*: their code needs to be in functions, and only invoked with a `__name__` guard:

if __name__ = '__main__':
do_stuff()

Unprotected scripts (where the code is just in the script, and runs when the script is imported as a module) will probably still work with LensKit 0.9, but will not work in the next version of LensKit. Jupyter notebooks should be just fine - when they are run, the IPython kernel is actually running, and it is properly protected.

What’s Changed

* Improving testing with minimal dependencies (151) mdekstrand
* Skip predictions when no ratings to predict (149) mdekstrand
* Use BinPickle for sharing (148) mdekstrand
* Support iterating over training iterations (144) mdekstrand
* Fix for Numba 0.49 compatibility (146) mdekstrand
* Use GitHub Actions for CI (143) mdekstrand
* Use declarative configuration for builds (142) mdekstrand
* Add model stores for batch multiprocessing (139) mdekstrand
* Improve top-N metric performance (140) mdekstrand
* Fix Conda Python 3.8 testing (138) mdekstrand
* Unify configuration points (137) mdekstrand
* Clean up RNG infrastructure (136) mdekstrand
* Add configurable RNG infrastructure (135) mdekstrand
* Remove deprecated and unused features (134) mdekstrand
* Version bumps - Pandas 1.0 and Python 3.8 (133) mdekstrand

0.8.4

This release cleans up dependency problems to make it easier to reliably install LensKit. We remove
some unused utility code that had compatibility problems.

- Remove `CSR.sort_values` - we were no longer using this function, and it failed to compile with Numba 0.46.
- Change dependency versions

0.8.1

This is the same as 0.8.0, with a couple of small build environment tweaks to properly deploy the release.

0.8.0

See the [GitHub milestone](https://github.com/lenskit/lkpy/milestone/5) for full change list.

Infrastructure Updates

- Dropped support for Python 3.5
- Removed `*args` from `Algorithm.fit`, so additional data must be provided via keyword arguments
- Made `Algorithm.fit` implementations consistently take `**kwargs` for hybrid flexibility

Algorithm Updates

- Substantial performance and stability improvements to item-item
- Added a coordinate descent solver to explicit-feedback ALS and made it the default. The old
LU-based solver is still available with `method='lu'`.
- Added a conjugate gradient solver to implicit-feedback ALS and made it the default.
- Added a random recommender

0.7.0

See the [GitHub milestone](https://github.com/lenskit/lkpy/milestone/3) for full change list.

- Use [Joblib][] for parallelism in batch routines.
- `nprocs` arguments are renamed to `n_jobs` for consistency with Joblib.
- Removed `parallel` option on `MultiEval` algorithms, as it was unused.
- Made `MultiEval` default to using each recommender's default candidate
set, and adapt algorithms to recommenders prior to evaluation.
- Make `MultiEval` require named arguments for most things.
- Add support to `MultiEval` to save the fit models.
- `RecListAnalysis` can optionally ensure all test users are returned, even
if they lack recommendation lists.
- Performance improvements to algorithms and evaluation.

[Joblib]: https://joblib.readthedocs.io

Page 5 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.