Skip to main content

Formula-first generalized additive models with a high-performance Rust core

Project description

gamfit

PyPI Python License

A formula-first generalized additive model library for Python, backed by a high-performance Rust engine.

gamfit fits Gaussian, binomial, Poisson, and Gamma GLMs with smooth terms, random effects, location-scale extensions, survival likelihoods, and flexible/learnable links. Smoothing parameters are selected by REML or LAML. Posterior sampling uses NUTS.

Install

uv add gamfit

Or with a managed Python (one-off, no project required):

uv pip install gamfit

Wheels are published for Linux (x86_64, aarch64), macOS (x86_64, Apple silicon), and Windows. No Rust toolchain required.

Quick start

import gamfit

train = [
    {"y": 1.2, "x": 0.0},
    {"y": 1.9, "x": 1.0},
    {"y": 3.1, "x": 2.0},
    {"y": 4.5, "x": 3.0},
]

model = gamfit.fit(train, "y ~ s(x)")
predictions = model.predict([{"x": 1.5}, {"x": 2.5}], interval=0.95)
print(model.summary())
model.save("model.gam")

Pandas, pyarrow, dict-of-columns, and list-of-records inputs all work without conversion.

What's different

  • Three-part penalty structure. Each smooth gets separate penalties for magnitude, gradient, and curvature. Most GAM libraries use one (curvature only) or two; the three-part decomposition gives the smoother more degrees of freedom to distinguish flat-but-offset functions from wiggly ones.
  • Flexible link functions. A spline offset from a base link (e.g. probit) lets the data correct for link misspecification while encoding the belief that the base link is approximately right.
  • Surface smooths. Thin-plate splines, Duchon radial bases with triple-operator regularization, and Matérn covariance smooths in arbitrary dimension, with automatic knot placement.
  • Adaptive anisotropy. Per-axis spatial anisotropy lets the model shrink or stretch each feature axis independently within a single joint smooth.
  • Composable basis/kernel. Mix and match the kernel of one spline family with the length-scale behavior of another (e.g. Duchon kernel with Matérn-style global κ scaling).

scikit-learn integration

from gamfit.sklearn import GAMRegressor

est = GAMRegressor(formula="y ~ s(x)")
est.fit(train)
preds = est.predict([{"x": 1.5}, {"x": 2.5}])

Public API

Symbol Purpose
gamfit.fit(data, formula, **kwargs) Fit a model from a dataset and a Wilkinson-style formula.
gamfit.load(path) / gamfit.loads(bytes) Reload a saved model.
gamfit.validate_formula(data, formula, ...) Type-check a formula against a dataset without fitting.
gamfit.build_info() Native-extension build metadata.
gamfit.explain_error(exc) Convert a gamfit exception into a human-readable hint.
gamfit.Model Fitted-model handle: predict, summary, check, diagnose, plot, report, save.
gamfit.sklearn.GAMRegressor / GAMClassifier scikit-learn-compatible estimators.

See the project documentation for the full guide, the formula DSL reference, and the CLI.

Optional extras

uv add "gamfit[pandas]"     # pandas + pyarrow input/output
uv add "gamfit[plot]"       # matplotlib-based plotting
uv add "gamfit[sklearn]"    # scikit-learn integration
uv add "gamfit[all]"        # everything

License

AGPL-3.0-or-later. See LICENSE. A commercial license is available for closed-source or SaaS use — see COMMERCIAL.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gamfit-0.1.34.tar.gz (2.6 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

gamfit-0.1.34-cp310-abi3-win_amd64.whl (10.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

gamfit-0.1.34-cp310-abi3-musllinux_1_2_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

gamfit-0.1.34-cp310-abi3-musllinux_1_2_aarch64.whl (8.6 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

gamfit-0.1.34-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

gamfit-0.1.34-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (8.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

gamfit-0.1.34-cp310-abi3-macosx_11_0_arm64.whl (8.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

gamfit-0.1.34-cp310-abi3-macosx_10_12_x86_64.whl (9.3 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file gamfit-0.1.34.tar.gz.

File metadata

  • Download URL: gamfit-0.1.34.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for gamfit-0.1.34.tar.gz
Algorithm Hash digest
SHA256 db5cc4923f0e5515360e909b1ab3cb04f2fe031f7bde56188fd299c614288079
MD5 16eeab700e5aa7bba1bfc1dd3d182ef9
BLAKE2b-256 eb6558dbdc55d80a11377d54447e493700352ffc510d837bd8e334ff7702dd56

See more details on using hashes here.

File details

Details for the file gamfit-0.1.34-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: gamfit-0.1.34-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 10.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for gamfit-0.1.34-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 018052c607280740371b49d15409e48fb3b2cfda546a2b59950bd5da3081e2a5
MD5 7d39f6715b38730a3680738f7f1f1d09
BLAKE2b-256 2e6f6e439a31d4cdac7acad1082f65722cfb19fb9b195d56d83025b30702694a

See more details on using hashes here.

File details

Details for the file gamfit-0.1.34-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for gamfit-0.1.34-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1abdd15acb86ba53ef77f9e0cca1bd3e8d532fde50f33a75a28a34359f42076d
MD5 0b3f44ec60440512ebaaf143f050d06c
BLAKE2b-256 82ba96429356a4a08b9cb821b15e4c23092ec03fb35c790f63409f8438321f41

See more details on using hashes here.

File details

Details for the file gamfit-0.1.34-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for gamfit-0.1.34-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 97fc2938cc7e6d60b71972704c37c0ca5cd7ebda409cd4728c09ac44e6a1da10
MD5 9f0313c68753e04d3ade0f213bd584ee
BLAKE2b-256 27c3692fee284558269076b33aaac966f69681ba9df02651fca0f7f46744323b

See more details on using hashes here.

File details

Details for the file gamfit-0.1.34-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamfit-0.1.34-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2f3bc4115cce66b48f3c86d1679b9012926998155ce300ab0f61c3c41172fe1
MD5 8d5a2e5bee084346f443ea47cc9ecb7a
BLAKE2b-256 4647f891ca1c83fd62934a103c1ade062ec7b7866cf719db50e067447c7dfe34

See more details on using hashes here.

File details

Details for the file gamfit-0.1.34-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gamfit-0.1.34-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 943bab2924687bf78456cf577b3c7cc7b12bbff21a3c588a6e83debb3f6588a2
MD5 64fa34d43b64906cb816d4a383c23300
BLAKE2b-256 7510e491da0214e95163f7d510a853c1e1eee411731380cea2fffc36e0880d8e

See more details on using hashes here.

File details

Details for the file gamfit-0.1.34-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gamfit-0.1.34-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe7bb22b08d8aecc8116992bb0ed59fbc26da20ad8e5376ace02615bdc07718e
MD5 570784a8cac61310f4936bafd3d5f343
BLAKE2b-256 b53ba2eff5d61295df9c367ee171c8ef4f515acce576e204604b22294761a21c

See more details on using hashes here.

File details

Details for the file gamfit-0.1.34-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gamfit-0.1.34-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0b4aad112b4de3e9180521c178b32c5fc3eaff548ac4035c4d34669612e46a9e
MD5 2e28946877cacfb41b513bd7eae988cf
BLAKE2b-256 ca94c0a5dc46d84d93fae0b97c8aff2882e1ad780311797f1fbafc7718dae13f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page