Releases: lenskit/lkpy
Initial PyPI 2025 release
This is the first pre-release of LensKit 2025 to PyPI.
Quick bugfix
This fixes a bug in the util.clone
function where it incorrectly cloned tuples as lists.
0.14 Dependency Updates
This is a small compatibility update for 0.14 to support Python 3.11, newer Numba, and Pandas 2.
What's Changed
- Support Python 3.11 & Numba 0.58 by @mdekstrand in #355
Full Changelog: 0.14.2...0.14.3
Dependency Updates
This release just bumps dependencies to enable and test support for Numba 0.56; also bumps up the minimum SciPy version to make the tests pass reliably (the minimum version is still several years old).
What's Changed
- Use external build tools for 0.14 fix releases by @mdekstrand in #321
- Support Numba 0.56 in 0.14 series by @mdekstrand in #322
Full Changelog: 0.14.1...0.14.2
Fix truncated nDCG bug
This release fixes #309, a bug in which the nDCG metric was not correctly computed when k
is smaller than the recommendation list.
What's Changed
- Fix nDCG truncation bug (#309) by @mdekstrand in #310.
Full Changelog: 0.14.0...0.14.1
Cleaning Up
This release has a lot of cleanups and refactorings. Highlights:
⚠️ MultiEval's deprecation has been upgraded to removal⚠️ ImplicitMF's default has changed to no longer use rating values, even if they are present (old behavior is still an option)- The k-NN recommenders now have an easier way to configure the typical setup for implicit feedback.
- Algorithms using heavy external code, and bridges to other systems, have been moved to their own packages to be released shortly. This includes the HPF recommender, TensorFlow recommenders, and Ben Frederickson's 'implicit' library. Moving these into their own repositories will decrease maintenance overhead on the main LensKit project, and should also make installation easier.
- Python 3.10 is now supported.
See the detailed release notes below for more information.
This will be the last release series tested against Python 3.7. Further patch releases (e.g. a 0.14.1) will be tested on 3.7, but 0.15 will drop 3.7 support as per NEP 29. NEP 29 would allow us to drop 3.7 with this release, but I'm keeping it since it's been so long since the last LensKit release.
What’s Changed
- Clean up missing documentation & bad links (#299) @mdekstrand
⚠ Breaking Changes
- Change ImplicitMF to default to not use ratings (#298) @mdekstrand
- Remove MultiEval (#277) @mdekstrand
🐜 Bug Fixes
- Correctly include missing user scores with multiple runs (#293) @mdekstrand
📏 Evaluation Support
- Fix index output from top-N evaluation (#306) @mdekstrand
- Add a hit metric to compute hit rates (#303) @mdekstrand
- Document formulas for all metrics (#302) @mdekstrand
- Correctly include missing user scores with multiple runs (#293) @mdekstrand
- Raise an error when attempting to split a data frame with a non-unique index (#272) @keener101
- Remove MultiEval (#277) @mdekstrand
🧩 Algorithms
- Add AllItemsCandidateSelector (#304) @mdekstrand
- Change ImplicitMF to default to not use ratings (#298) @mdekstrand
- Add feedback modes to k-NN recommenders (#297) @mdekstrand
- Add use_ratings switch to item-item k-NN (#296) @mdekstrand
- Split TensorFlow into a separate package (#283) @mdekstrand
- Split implicit wrappers into new package (#281) @mdekstrand
- Split HPF into a separate package (#270) @mdekstrand
- Improve item-item docs and diagnostics for implicit feedback (#275) @mdekstrand
🧱 Internals
- Disable SharedMemory on Windows and improve testing (#301) @mdekstrand
🔧 Maintenance
- Reduce CI build load (#300) @mdekstrand
- Update Conda build matrix (#295) @mdekstrand
- Test Python 3.10 on Conda (#294) @mdekstrand
- Test against Python 3.10 and Numba 0.55 pre-release (#292) @mdekstrand
- Switch from PowerShell to Invoke tasks (#291) @mdekstrand
- Share BibTeX retrieval across LensKit projects (#286) @mdekstrand
- Upload coverage at end of build pipeline (#284) @mdekstrand
- Update to PEP 621 and better folder naming (#280) @mdekstrand
- Depend on Pandas 1.0 or newer (#279) @mdekstrand
- Support Numba 0.54 (#278) @mdekstrand
- Use conda-lock for build environments (#276) @mdekstrand
- Use BibTeX for references (#273) @mdekstrand
- Fix flit-conda build (#274) @mdekstrand
Little bug fix
Just a little bug fix for Bias
(doesn't affect correctness, just makes documented configuration options actually work instead of throwing an exception).
What’s Changed
- Fix bias transform with disabled users/items (#268) @mdekstrand
LensKit 0.13.0 - critical bugs fixed
We're pleased to release LensKit 0.13!
Major Fixes
This release includes two critical fixes, for which everyone should upgrade:
- The
Bias
model'stransform
andinverse_transform
methods were incorrect (#265). These bugs did not affectBias
when used as a predictor or a recommender, but they did affect any model usingBias
as a normalization step, namely the biased matrix factorizers (since version 0.11, when this API was added). - Previous versions of LensKit did not clean up temporary files (or, on Python 3.8 and later, shared memory resources) when running parallel evaluation processes.
It also includes significant performance improvements and code to detect common problems with parallel processing configurations, and is tested on Python 3.9 and on Linux AArch64 (64-bit ARM).
Future Changes
This release deprecates two sets of APIs that will be removed in LensKit 0.14:
MultiEval
(#254) - it doesn't work well for realistic projects, and simple evaluations are easy enough to write in a loop, so we will be removingMultiEval
to reduce our maintenance burden going forward.- RNG seed management APIs - these are replaced by seedbank. In 0.13, the APIs are kept as compatibility shims for their SeedBank replacements, but we will remove them in 0.14 in favor of directly calling seedbank.
We haven't yet adopted any formal deprecation policies for LensKit, but my current tentative plan is to use this next-release cadence for nontrivial removals while we're still releasing 0.x versions; once we decide to bump to 4.x, we will use semantic versioning on all public APIs, and thus deprecations will not be enforced until the next major release.
In a future LensKit, I tentatively plan to factor out several of our bridges (TensorFlow, Implicit, HPF) into separate projects. We will keep compatibility imports for at least one 0.x release, and probably until 4.0. This will reduce the development overhead of the LensKit core.
What’s Changed
- Remove fastparquet import (#266) @mdekstrand
- Fix incorrect user bias transformation (#265) @mdekstrand
- Revise dependency specifications (#264) @mdekstrand
- Update deprecation notices (#263) @mdekstrand
- Detect problems with runtime environments (#248) @mdekstrand
- Add use_ratings option to ImplicitMF (#245) @mdekstrand
- Add 'k' support to top-N metrics (#247) @mdekstrand
- Further Top-N optimization updates (#242) @mdekstrand
- Free shared memory in parallel (#243) @mdekstrand
- Optimize top-N analysis (#237) @mdekstrand
- Add PlackettLuce stochastic ranking algorithm (#241) @mdekstrand
- Add PopScore algorithm for popularity-based scoring (#240) @mdekstrand
- Refactor ranking into a 'ranking' module (#239) @mdekstrand
- Enable tests on Python 3.9 (#234) @mdekstrand
- Deprecate MultiEval (#238) @mdekstrand
- Add more logging output to parallelism code (#236) @mdekstrand
- Add convenience prediction accuracy functions (#235) @mdekstrand
Really publish
This actually publishes the 0.12 bump, a tagging error prevented 0.12.2 from going out.
Education Bugfixes
This release contains the sampling function refactor (#230), and documentation improvements.