AI tools, scored for your job
Get paid to train AI
🤝 You're in the Free & Open Source library — community-built tools you can use without paying. A different concept from our scored AI directory.
Home › Free & Open Source › Data Science › PySR
✦ Free & open sourceData Science

PySR

High-performance symbolic regression and equation discovery in Python and Julia.

Symbolic Regression and Equation Discovery

High-performance genetic algorithms for interpretable machine learning in Python and Julia.

Free forever · open source · Apache-2.0
✓ Light setup✓ Browser-based✓ Real-time collaboration
7.8
ZEKAI
Essential for explainable ML
Free & open source · Data Science
Ease of setup5
Usefulness9
Maintenance9.5
Community7.5
★ 3,755
GITHUB
Sep 2026
UPDATED
Apache-2.0
LICENSE
🛠 Don't want to self-host? We can set it up →
⚡ Quick answer

PySR is an open-source tool for symbolic regression that searches for interpretable mathematical expressions fitting your data. It suits data scientists and researchers who need explainable models rather than opaque black-box predictions.

Runs on
Cross-platform
Hosting
Desktop
Languages
Python
License
Apache-2.0

What it is

The tool uses evolutionary algorithms backed by a high-performance Julia search engine to discover explicit analytic equations. It features scikit-learn compatible syntax, custom operators, loss functions, and outputs formulas in SymPy, JAX, or PyTorch formats.

Who it's for

It suits data scientists working on low-dimensional datasets or performing symbolic distillation of neural networks. It does not suit teams looking for traditional gradient-boosting tables or those unable to manage mixed Python and Julia runtime dependencies.

Key features

Scikit-Learn Interface

Fits models using standard fit and predict syntax familiar to Python developers.

Multi-Format Export

Converts discovered equations directly into SymPy, JAX, or PyTorch formats.

Custom Operators

Supports user-defined mathematical operators and custom loss functions written in Julia syntax.

Symbolic Distillation

Converts trained neural networks into analytic equations to interpret deep learning models.

How to start

Up and running in 3 steps

1
Install the package via pip install pysr in your Python environment.
2
Import PySRRegressor and configure your search parameters, operators, and loss functions.
3
Call model.fit(X, y) to launch the multithreaded Julia search engine and generate equations.
Real talk

Our honest verdict

What's great

  • Dramatically faster searches powered by an underlying Julia execution engine
  • Outputs fully differentiable expressions compatible with JAX and PyTorch
  • Allows custom operator and custom loss function injection
  • Includes warm-start capability to resume searches without losing state

Where it falls short

  • Requires both Python and Julia runtimes, which can introduce complex environment issues
  • Prone to hard import crashes if system library paths like libstdc++ conflict
  • Symbolic regression scales poorly on high-dimensional datasets without prior feature reduction
Cost

Pricing & license

Free under its Apache-2.0 license. The only cost is the local compute power and time required to run the evolutionary search.

Paid work

Open remote AI-training roles

876 open remote AI-training roles, updated November 15, 2026; most pay $20–$170 an hour. Zekai lists them free; the application goes to the employer’s platform.

See all open roles →
Compare

Alternatives

🎁 Free & open-source alternatives
Get more

Use it, or have us set it up

📄 Free PDF: PySR for Data Science
A plain-language guide to getting your first result. Sent to your inbox.
🔔 64 people want a full video tutorial — add your vote
🛠 Don't want to set it up yourself?
We'll install, host & configure PySR for you — and train your team.
Get it done for you ↗
Questions

FAQ

Why does PySR require Julia?

PySR uses a high-performance Julia library called SymbolicRegression.jl as its underlying search engine to execute millions of genetic algorithm mutations rapidly.

How can I export equations to neural network frameworks?

You can call model.jax() or model.pytorch() on a fitted model to get differentiable expressions ready for deep learning pipelines.

Radar

Latest AI news

✉️ The weekly free toolkit
The best new free & open-source tools for Data Science — one short email a week, in your language.
Free · 1 email/week · unsubscribe anytime
Get paid to train AI →

See Zekai first in Google