Changes for version 0.3.0 - 2026-07-02
- lots of POD fixes/cleanup
- various further C optmizations
- fit() can now handle training data with missing (undef) feature cells, selectable via the new `missing =>` constructor option: die :: croak on undef in the training data (default) zero :: treat a missing cell as the value 0 impute :: fill with the per-feature mean/median (see `impute_with`) nan :: range over present values and route missing rows to the right child, consistently at fit and score time
- new `impute_with => 'mean'|'median'` option for impute mode ... missing strategy + impute fill vector are persisted in saved models; models from older releases load as `zero` (the prior undef -> 0 scoring behaviour)
- the C build is now tunable via environment variables read at first module load: IF_ARCH=<value> adds -march=<value>, IF_NATIVE=1 is shorthand for IF_ARCH=native, IF_OPT overrides the default -O3, and IF_NO_C=1 skips building the C backend entirely; values are validated (bad ones warn and fall back to the defaults) and the flags actually used are exposed via $OPT_LEVEL
- Benchmarking: bench-sklearn-scoring.pl now compares pure Perl, C, and C+OpenMP fit/score paths against sklearn side by side
Modules
unsupervised anomaly detection via Isolation Forest or Extended Isolation Forest
Provides
in lib/Algorithm/Classifier/IsolationForest/App.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/accel.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/bench.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/csv2plot.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/fit.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/gblob.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/info.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/pack.pm
in lib/Algorithm/Classifier/IsolationForest/App/Command/predict.pm
in lib/Algorithm/Classifier/IsolationForest.pm
in benchmarking/BenchAccel.pm