SPORF on current Python
A maintained fork of sparse projection oblique randomer forests, proposed upstream in neurodata/SPORF#361.
SPORF, short for sparse projection oblique randomer forests (Tomita et al.), is a random forest that splits on sparse random linear combinations of features rather than on one feature at a time. Its Python package no longer builds on recent versions of Python and pip. My fork makes it work again:
- restores the unsupervised forests (URF and URerF), and fixes a data race in the C++ code that updates their similarity matrix;
- removes an unused Eigen dependency and modernizes the build, so the package installs with current pip on Python 3.8 to 3.14;
- makes scikit-learn 1.6 and later recognize the classifier, and updates the tests for current scikit-learn;
- makes the unsupervised forests respect
random_state, and adds continuous integration.
These changes are proposed upstream in neurodata/SPORF#361, which is awaiting review.