Skip to main content

evo-imp - Evolutionary Symbolic Imputer

PyPI Python versions Docs CI License: MIT

A scikit-learn-compatible missing-value imputer for tabular data, powered by DEAP. evo-imp evolves an interpretable symbolic expression per feature with Genetic Programming, capturing non-linear relationships that SimpleImputer/KNNImputer/IterativeImputer cannot represent. It is a natural first step in the pipeline, upstream of evo-gpfe (feature engineering) and evo-gafs (feature selection).

Part of the evo-suite family (import name: evo_imp). Documentation: https://evo-suite.readthedocs.io/

Why evo-imp?

Capability evo-imp
Interpretable, non-linear imputation: a symbolic expression per feature Yes
Holdout-validated fitness: reported RMSE/fallback decision use a held-out split, not in-sample Yes
Never worse than the mean: automatic fallback when GP does not improve over SimpleImputer(mean) Yes
Native scikit-learn transformer EvoImputer, usable in a Pipeline Yes
Optional sympy-based expression simplification for readability Yes
Built-in multi-dataset EvoImpBenchmarkRunner and MCAR evaluation helpers Yes

Installation

pip install evo-imp            # core
pip install "evo-imp[viz]"     # + matplotlib for the plotting helpers
pip install "evo-imp[simplify]"  # + sympy for simplify_expressions=True

Quickstart

from sklearn.datasets import load_diabetes
from evo_imp import EvoImpConfig, EvoImputer, introduce_mcar

X = load_diabetes(as_frame=True).data
X_missing, _ = introduce_mcar(X.values, missing_rate=0.20, random_seed=42)

imputer = EvoImputer(
    config=EvoImpConfig(population_size=150, n_generations=30, verbose=False)
)
X_imputed = imputer.fit_transform(X_missing)

print(imputer.summary())
print(imputer.get_expressions())

Unlike the rest of evo-suite, EvoImputer is unsupervised (fit(X, y=None)) and its whole purpose is to accept NaN input — see the Concepts guide for why this is a deliberate exception to the family's usual scikit-learn conventions.

Documentation & examples

Citation

@software{evo_imp,
  author    = {Skrauba, Axel},
  title     = {evo-imp: Evolutionary Symbolic Imputer for tabular data},
  year      = {2026},
  version   = {0.1.0},
  url       = {https://github.com/AxelSkrauba/evo-suite}
}

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evo_imp-0.1.0.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evo_imp-0.1.0-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file evo_imp-0.1.0.tar.gz.

File metadata

  • Download URL: evo_imp-0.1.0.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evo_imp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b8bf9d4990b7c281bdf43943ff9766ca823fecc7d7a83ca62e839e60ee7dd609
MD5 2adac1e60c8c652a5cc7bba09f15f9a8
BLAKE2b-256 e62555ac9bfdd650cd8d24630c8b2ec39541cd8fc9b90afb2dd5f8f9e2d62bc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for evo_imp-0.1.0.tar.gz:

Publisher: publish.yml on AxelSkrauba/evo-suite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evo_imp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: evo_imp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 32.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evo_imp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d234d6f10b43219fa6bb627d2f44fb93b08a8958c1fe97a5ee016bc771595f2
MD5 6158c9d1114114039787cbdeea073b1d
BLAKE2b-256 55d209b30b8a19175bb579933cdb191e354e04a71e77231e68d5934dbb67233b

See more details on using hashes here.

Provenance

The following attestation bundles were made for evo_imp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on AxelSkrauba/evo-suite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page