astroautomata/PySR

High-Performance Symbolic Regression in Python and Julia

What it solves

PySR solves the problem of finding interpretable, analytic equations that fit a dataset. Unlike standard machine learning models that act as "black boxes," PySR performs symbolic regression to discover the actual mathematical expressions that optimize a specific objective.

How it works

PySR uses a high-performance search engine written in Julia (SymbolicRegression.jl) accessible via a Python interface. It searches for symbolic expressions by performing hundreds of thousands of mutations and evaluations. It can also be used for "Symbolic Distillation," where it converts a complex neural network into a simpler analytic equation to make the network's behavior interpretable.

Who it’s for

It is designed for researchers and data scientists who need explicit mathematical formulas rather than just predictions, particularly those working with low-dimensional datasets or seeking to interpret deep neural networks.

Highlights

  • High Performance: Engineered for speed and configurability with a multithreaded Julia backend.
  • Flexible Operators: Supports custom binary and unary operators with specific complexity constraints.
  • Interoperable: Exports learned equations into multiple formats, including SymPy, JAX, and PyTorch.
  • Scikit-learn Style: Provides a familiar PySRRegressor interface for easy integration into Python workflows.

Related

  • Project
  • Project
  • Project
  • Project
  • Project