AutoML that breeds scikit-learn pipelines by evolution
TPOT automates machine-learning pipeline design by treating scikit-learn workflows as populations to be bred via genetic programming.

What it does
TPOT is a Python AutoML tool that treats scikit-learn pipelines as evolving organisms. You give it a dataset and a fitness metric; it explores candidate pipelines—handling preprocessing, feature selection, model choice, and hyperparameters—and keeps the winners. The goal is to remove the manual grunt work of pipeline tuning while staying inside the scikit-learn ecosystem.
The interesting bit
Rather than flattening pipeline search into a giant grid, TPOT models pipelines as graphs and mutates their structure directly. The recent ground-up rewrite (previously dubbed TPOT2) introduced multi-objective optimization and a modular evolutionary framework, meaning you can customize the genetic algorithm itself, not just the operators it searches over.
Key highlights
- Evolves complete scikit-learn pipelines end-to-end, including preprocessing and feature selection.
- Graph-based representation allows structural mutations—swapping nodes, not just tweaking knobs.
- Modular framework lets you customize the evolutionary algorithm’s behavior.
- Parallel execution via Dask, though the README insists you wrap script logic in
if __name__ == "__main__"to avoid multiprocessing chaos. - Optional
preprocessing = Truewill impute missing values and encode categoricals automatically.
Caveats
- TPOT does not validate that your data matches your operators; pass a dataframe with categoricals and you must either enable preprocessing or supply compatible steps.
- The built-in preprocessing is currently fit on the entire training set before cross-validation splits, which can leak information; per-fold preprocessing is noted as future work.
- sklearnex acceleration extensions are explicitly flagged as untested or unstable on Arm-based CPUs such as Apple Silicon.
Verdict
Best for practitioners who want to automate scikit-learn pipeline discovery and can spare the CPU cycles for evolutionary search. Look elsewhere if you need deterministic tuning or tight control over every preprocessing step.
Frequently asked
- What is EpistasisLab/tpot?
- TPOT automates machine-learning pipeline design by treating scikit-learn workflows as populations to be bred via genetic programming.
- Is tpot open source?
- Yes — EpistasisLab/tpot is open source, released under the LGPL-3.0 license.
- What language is tpot written in?
- EpistasisLab/tpot is primarily written in Jupyter Notebook.
- How popular is tpot?
- EpistasisLab/tpot has 10k stars on GitHub.
- Where can I find tpot?
- EpistasisLab/tpot is on GitHub at https://github.com/EpistasisLab/tpot.