evo-imp - Evolutionary Symbolic Imputer
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
- Full documentation (user guide + API reference): https://evo-suite.readthedocs.io/
- Runnable examples: the repository's
examples/evo-imp/directory.
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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| evo_imp-0.1.0.tar.gz | 29.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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