evo-suite

Evolutionary computation for tabular data engineering.

evo-suite is a family of independent, scikit-learn-compatible packages that apply evolutionary computation to the data-preprocessing stage of a machine-learning pipeline. They share one repository, CI and documentation, but are published to PyPI independently.

Distribution

Import

Technique

Role

Status

evo-imp

evo_imp

Genetic Programming

Missing-value imputation

Available

evo-gafs

evo_gafs

Genetic Algorithm

Feature selection

Available

evo-gpfe

evo_gpfe

Genetic Programming

Feature engineering

Available

evo-ens

evo_ens

Genetic Algorithm

Ensemble construction

Available

The four packages are complementary and form a natural pipeline: evo-imp imputes missing values with symbolic expressions, evo-gpfe constructs new features through evolved symbolic expressions, evo-gafs selects the best subset from the (possibly augmented) feature set, and evo-ens combines several final models into a diversity-aware ensemble. Chaining GP and GA (construct, then select) is a common pipeline; see the 06_gp_then_ga_pipeline.py example.

evo-imp — Evolutionary Symbolic Imputer

A genetic-programming missing-value imputer.

  • Interpretable, non-linear imputation: evolves a symbolic expression per feature (sqrt(x2) * log(|x5|) + 0.87*x3), auditable via get_expressions(), unlike KNNImputer/IterativeImputer/MissForest.

  • Holdout-validated fitness: the reported RMSE and the fallback decision are computed on a held-out split, not in-sample, so the comparison against the mean baseline is honest.

  • Never worse than the mean: an automatic fallback to SimpleImputer-style behaviour when GP does not improve over it.

  • Native scikit-learn transformer: fit(X, y=None) / fit_transform / get_feature_names_out, usable in a Pipeline; unlike the rest of evo-suite it accepts NaN input by design.

  • Built-in multi-dataset EvoImpBenchmarkRunner and MCAR evaluation helpers.

Quickstart · User guide · API reference

evo-gafs — Genetic Algorithm Feature Selector

A genetic-algorithm wrapper feature selector.

  • Explicit accuracy ↔ compression trade-off via a single alpha parameter — ideal for edge/embedded deployment.

  • Multi-objective NSGA-II mode exposing the full Pareto front.

  • Native scikit-learn estimator: fit / transform / get_support, usable in a Pipeline and tunable with GridSearchCV.

  • Repair operator guaranteeing feasible subsets, evaluation cache, and a built-in multi-dataset benchmark runner.

Quickstart · User guide · API reference

evo-gpfe — Genetic Programming Feature Engineer

A genetic-programming symbolic feature constructor.

  • Sequential hall-of-fame strategy: relevance to the target, penalised by redundancy with already-generated features and tree complexity.

  • Protected primitives (safe division, log, sqrt, …) so randomly assembled expressions always evaluate.

  • Native scikit-learn transformer: fit / transform / get_feature_names_out, usable in a Pipeline and tunable with GridSearchCV.

  • Anti-bloat controls (static height limit, parsimony penalty) and a built-in multi-dataset benchmark runner.

Quickstart · User guide · API reference

evo-ens — Evolutionary Ensemble Builder

A genetic-algorithm ensemble constructor.

  • Diversity-aware fitness: co-optimizes predictive score and prediction diversity (Yule’s Q-statistic / Pearson correlation) between members.

  • Out-of-fold pre-computation: candidate models are cross-validated once, making evolution over large populations cheap.

  • Native scikit-learn estimators: EvoEnsembleClassifier / EvoEnsembleRegressorfit / predict / predict_proba, usable in a Pipeline and tunable with GridSearchCV.

  • Multi-objective NSGA-II mode exposing the full score/compression Pareto front, and a built-in multi-dataset benchmark runner.

Quickstart · User guide · API reference