What My Project Does
GP_ELITE is a symbolic regression engine in pure Python: given (X, y) data, it
searches for a readable mathematical formula linking them, instead of a
black-box model.
To show what that means concretely: I gave it nothing but the 8 planets'
distance from the Sun and orbital period — 8 data points — and asked for a
formula. It returned:
T = a · sqrt(a) (i.e. a^1.5), R² = 1.000000
That's Kepler's Third Law (T² ∝ a³), which took Kepler ~10 years to find in
1618. GP_ELITE found it in ~3 seconds. Reproducible: examples/kepler_demo.py.
v0.2.0 (this week) added the parts that make it reliable: Levenberg-Marquardt
constant fitting (constants come back at machine precision — Coulomb's
q1·q2/(4πεr²) is recovered exactly), multi-restart with a merged candidate
archive, a Pareto front output (the full complexity ↔ accuracy staircase, not
just one champion), and a guarded forecasting mode for extrapolating trends
beyond your data without the usual GP blow-ups.
Pure Python/NumPy — pip install gp-elite, no compiler, no Julia.
Target Audience
Anyone with small experimental datasets (≤10 variables, 100–5000 points) who
wants to understand a relationship, not just predict it: lab engineers,
scientists, students. One concrete use case that drove development: battery
degradation (SOH) forecasting — the guarded mode gives you an honest bracket
of scenarios (a Pareto front from a conservative straight line to richer
bounded laws) instead of one overconfident curve. Production-usable for that
niche (built-in hold-out validation, regression-tested); not aimed at
large-scale ML.
Comparison
vs gplearn (the established pure-Python option): I ran both on the same
frozen benchmark — 15 Feynman physics equations, identical data and splits,
generous budget for gplearn. Exact symbolic recovery (machine precision):
GP_ELITE 10/15 (67%) vs gplearn 6/15 (40%). gplearn recovers the
constant-free formulas and stalls as soon as a ½ or a 4π appears (no real
constant optimization); LM fitting is what closes that gap. Every number is
reproducible: PYTHONHASHSEED=0 python benchmarks/feynman_bench.py 0 15 and
benchmarks/duel.py in the repo.
vs PySR / Operon (the state of the art): they are stronger on speed and
scale, and I'm not claiming otherwise — but they require a Julia or C++
toolchain. GP_ELITE's whole point is zero barrier: pip install and go.
vs neural nets / gradient boosting: those win on raw accuracy for large
data, but give you a black box — GP_ELITE gives you the actual equation.
Honest limits: weak on chaotic targets (tested on Collatz), degrades past ~6
variables with decoy features, and pure Python costs wall-time on big data.
Code (MIT): https://github.com/ariel95500-create/gp-elite