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

Metadata

Release files for evo-imp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evo-imp 0.1.0
File Size Uploaded
evo_imp-0.1.0.tar.gz 29.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evo-imp 0.1.0
File Interpreter ABI Platform
evo_imp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.3 kB

Release files / evo_imp-0.1.0.tar.gz

Download URL evo_imp-0.1.0.tar.gz
Size 29.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b8bf9d4990b7c281bdf43943ff9766ca823fecc7d7a83ca62e839e60ee7dd609
BLAKE2b-256 checksum
How to use checksums
e62555ac9bfdd650cd8d24630c8b2ec39541cd8fc9b90afb2dd5f8f9e2d62bc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.

Transparency log

Release files / evo_imp-0.1.0-py3-none-any.whl

Download URL evo_imp-0.1.0-py3-none-any.whl
Size 32.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8d234d6f10b43219fa6bb627d2f44fb93b08a8958c1fe97a5ee016bc771595f2
BLAKE2b-256 checksum
How to use checksums
55d209b30b8a19175bb579933cdb191e354e04a71e77231e68d5934dbb67233b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page