Skip to main content

High performance Python GLMs with all the features!

Project description

glum

CI Docs Conda-forge PypiVersion PythonVersion

Documentation

Generalized linear models (GLM) are a core statistical tool that include many common methods like least-squares regression, Poisson regression and logistic regression as special cases. At QuantCo, we have used GLMs in e-commerce pricing, insurance claims prediction and more. We have developed glum, a fast Python-first GLM library. The development was based on a fork of scikit-learn, so it has a scikit-learn-like API. We are thankful for the starting point provided by Christian Lorentzen in that PR!

The goal of glum is to be at least as feature-complete as existing GLM libraries like glmnet or h2o. It supports

  • Built-in cross validation for optimal regularization, efficiently exploiting a “regularization path”
  • L1 regularization, which produces sparse and easily interpretable solutions
  • L2 regularization, including variable matrix-valued (Tikhonov) penalties, which are useful in modeling correlated effects
  • Elastic net regularization
  • Normal, Poisson, logistic, gamma, and Tweedie distributions, plus varied and customizable link functions
  • Box constraints, linear inequality constraints, sample weights, offsets

This repo also includes tools for benchmarking GLM implementations in the glum_benchmarks module. For details on the benchmarking, see here. Although the performance of glum relative to glmnet and h2o depends on the specific problem, we find that when N >> K (there are more observations than predictors), it is consistently much faster for a wide range of problems.

For more information on glum, including tutorials and API reference, please see the documentation.

Why did we choose the name glum? We wanted a name that had the letters GLM and wasn't easily confused with any existing implementation. And we thought glum sounded like a funny name (and not glum at all!). If you need a more professional sounding name, feel free to pronounce it as G-L-um. Or maybe it stands for "Generalized linear... ummm... modeling?"

A classic example predicting housing prices

>>> from sklearn.datasets import fetch_openml
>>> from glum import GeneralizedLinearRegressor
>>>
>>> # This dataset contains house sale prices for King County, which includes
>>> # Seattle. It includes homes sold between May 2014 and May 2015.
>>> house_data = fetch_openml(name="house_sales", version=3, as_frame=True)
>>>
>>> # Use only select features
>>> X = house_data.data[
...     [
...         "bedrooms",
...         "bathrooms",
...         "sqft_living",
...         "floors",
...         "waterfront",
...         "view",
...         "condition",
...         "grade",
...         "yr_built",
...         "yr_renovated",
...     ]
... ].copy()
>>>
>>>
>>> # Model whether a house had an above or below median price via a Binomial
>>> # distribution. We'll be doing L1-regularized logistic regression.
>>> price = house_data.target
>>> y = (price < price.median()).values.astype(int)
>>> model = GeneralizedLinearRegressor(
...     family='binomial',
...     l1_ratio=1.0,
...     alpha=0.001
... )
>>>
>>> _ = model.fit(X=X, y=y)
>>>
>>> # .report_diagnostics shows details about the steps taken by the iterative solver
>>> diags = model.get_formatted_diagnostics(full_report=True)
>>> diags[['objective_fct']]
        objective_fct
n_iter               
0            0.693091
1            0.489500
2            0.449585
3            0.443681
4            0.443498
5            0.443497

Installation

Please install the package through conda-forge:

conda install glum -c conda-forge

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

glum-2.4.1.tar.gz (13.0 MB view details)

Uploaded Source

Built Distributions

glum-2.4.1-cp310-cp310-win_amd64.whl (334.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

glum-2.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

glum-2.4.1-cp310-cp310-macosx_11_0_arm64.whl (384.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

glum-2.4.1-cp310-cp310-macosx_10_9_x86_64.whl (774.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

glum-2.4.1-cp39-cp39-win_amd64.whl (336.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

glum-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

glum-2.4.1-cp39-cp39-macosx_11_0_arm64.whl (384.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

glum-2.4.1-cp39-cp39-macosx_10_9_x86_64.whl (774.2 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

glum-2.4.1-cp38-cp38-win_amd64.whl (337.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

glum-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

glum-2.4.1-cp38-cp38-macosx_11_0_arm64.whl (378.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

glum-2.4.1-cp38-cp38-macosx_10_9_x86_64.whl (764.7 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

glum-2.4.1-cp37-cp37m-win_amd64.whl (334.0 kB view details)

Uploaded CPython 3.7m Windows x86-64

glum-2.4.1-cp37-cp37m-win32.whl (285.2 kB view details)

Uploaded CPython 3.7m Windows x86

glum-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

glum-2.4.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

glum-2.4.1-cp37-cp37m-macosx_10_9_x86_64.whl (763.0 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

glum-2.4.1-cp36-cp36m-win_amd64.whl (334.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

glum-2.4.1-cp36-cp36m-win32.whl (285.0 kB view details)

Uploaded CPython 3.6m Windows x86

glum-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

glum-2.4.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

glum-2.4.1-cp36-cp36m-macosx_10_9_x86_64.whl (761.3 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file glum-2.4.1.tar.gz.

File metadata

  • Download URL: glum-2.4.1.tar.gz
  • Upload date:
  • Size: 13.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1.tar.gz
Algorithm Hash digest
SHA256 88b49bbb41238f0e01fbf147a81452d1d22801b4594488096b7b6edfbda5b7e7
MD5 76e2ca750165065f0b9e7894716c8fd0
BLAKE2b-256 21f1da395dfaea6b020432848f4f53f2aed5ca6b495ecdd95bfcacd2e1287d57

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: glum-2.4.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 334.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 38a9b267a998db802be37ed8c4940485bf80f520a3b765b4a4d1d2bcc76a4c79
MD5 bc3cda6f7718bc089a1f898607038e84
BLAKE2b-256 0f6b817114787da130175b11350b6051f334e7ad84b0769d3286a22644efc2db

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e57721c707dac066609104039c99f8874281bb59e2700f0efdbcca174cffebb1
MD5 133c0162b7d2f2bc57a30e95ce1238e2
BLAKE2b-256 fd8790a8bd37abd17ee55670e314b88de8b04fa81f675efea075aac2ee39e8b3

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6d9e732d379a472c07a590c7517ba1e7e79fa0fda96e363422141209847b384
MD5 ac76452329dedaff47aa0144185bb218
BLAKE2b-256 c148e4c667546166b543d897e6f6741c4c860762f977b6b50e56a6183c3bbbd9

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 04229717533fd46d01f237378f2a6228f6273e7f7b02f8e2da8a5bcc93919423
MD5 06602c8d4e0e418539c11b9299fb75b7
BLAKE2b-256 830464ba32182ce257f6a1121b2d02ecaecf795511dff0ca0a4cf9c0c307c92a

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: glum-2.4.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 336.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e595dae3fe6f9c64a14e6342944e15296201620f86eafea0287e1e734b64ac02
MD5 9ad86d8ce945e7fcf351fc8fc7792ec9
BLAKE2b-256 6dc09a70b0a696ce6526383ef31b185de357f0c5acb3f57dcdc25f0e81cd9ec3

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b19a16bbba6663d27d9c61e92b4290abba00be4ce4c396940ef0a832f069231c
MD5 fb73970adc3235ec90dd9d36028b1324
BLAKE2b-256 d264182a2eb4507783a08599ce689a0f35173441257abe26043995ae136d5bda

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ceef305a9b043f8f140d622362a5f95061c97775e9ae83280b347d0e26f7ed5
MD5 3a092beb68820da8a917433a89a6d194
BLAKE2b-256 d2f1eed4c20a1471c1184040a3425cbe9f1622839af0847882b6403164a4afbe

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 041601e087ec7f2eb966f8a490836b106c4318cd027b3b816111030c1ff523e4
MD5 a545f6d7a104b38c40888e63d2a3bd00
BLAKE2b-256 80b15266046e2fbb0f30c433c745190e7ba625d3dfff723747d0cd602cd1affd

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: glum-2.4.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 337.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b85d1b0df25088972c55f43f5ffe117c2ba8a1b2bc7f6931817d75c2188b9e1a
MD5 9358cdd0c6a8b52c4544a77003ca3bb5
BLAKE2b-256 e0dfbe925f078b43565b4a06f6c90f96b69a7ba0dbdd80cb68f91f00b69082b7

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d789639112e69194054d8bb83a84f9322f66c7c916304e163a6407faef85c656
MD5 bd355e6d268a2c2f256167e584560a3f
BLAKE2b-256 439610cd22ba2a1f305bf769ef405c84b030f1f25008b51c7d89d9d0adc3e30b

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fed2c0d2414f9731de362d38a67d7b8a411e55e4ddb296fa53d1d3cef13ce47d
MD5 3db892072ccf9fdd77576ec6dd3bc3a4
BLAKE2b-256 0c6b74ab4f05671dedc1d981254074e97c773ff5f8c45712c73cc73eab711c2b

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5d36aba6f68ceed8ada709ca95bd023b51aecdc92b8cbda42328a72ec517e2c7
MD5 006775b34b414bbba455cb16d7b7eba1
BLAKE2b-256 3f6058dc61d03570d76b10b336bdc67f93f5fab80fba5431e5ae7d919cbe5ba6

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: glum-2.4.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 334.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e5862fdc0ad80553029ae9ccd2730b76354e707fcc80fa2985ff7e6190068b35
MD5 880bbd852f7f1934af5735645e31eb2c
BLAKE2b-256 25b2a2ae8a7027c5b83423816e51e5a010f023d8dabde3cda2df8f91b5c76fee

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp37-cp37m-win32.whl.

File metadata

  • Download URL: glum-2.4.1-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 285.2 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 1f6c16c18a8d448ab4e82ee0c694db7ec2f761650524f46aabe3e3c9c3ab5112
MD5 c650c7f1aa1a1fa22c890555250eb671
BLAKE2b-256 f244667bba9da23a69024b58fe53d0771be2399b66dd15712f1e5cf41f1a6930

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e469ced18431e8d79367bbad3b93a4954018069de970c2287c7a019dcfacfd24
MD5 ed6699c906fbf5e0e87ac449c8f71e4a
BLAKE2b-256 f5f3020b4b529ed79774b316409448db01840eb37d9efc9c7bec626b11a5caaf

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2e2490c5f44abc766c4583fc892a90073e93341318c8fec179bde7221c27cce7
MD5 5eda440b578a0bd4cd09bd4bede9f604
BLAKE2b-256 92c897ed24ff4c36d7305359158e5b59ae3a7ac71c0c6c034a679d5796df8e46

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8f3ec88051f17e61bfb5d969690b756a47d293c05dc538377eb07ee029d16dfa
MD5 8909d368cc8c109b1f337cff17fd5ae9
BLAKE2b-256 7166dbbad96ae762cf04e7dfc108dcb1b56311a388867fd615e89af9be7f5e89

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: glum-2.4.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 334.0 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 c9547228ff49a58d8ec0df34158e8194fe356e4cd950474a2762e6264bc3511b
MD5 d525cf7b284ce6393e8e34994f21d4ba
BLAKE2b-256 50b2bddb3ce8fe37e8d5753cef6e95f0230296336967d8ca866ee690b73796ff

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp36-cp36m-win32.whl.

File metadata

  • Download URL: glum-2.4.1-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 285.0 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for glum-2.4.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 f2e57c8f8a599e19c3fe55addd9a81fae83c4bef416e1540163c4f9afb4af166
MD5 011d0673377d66279535955e4d1434a2
BLAKE2b-256 3bf5343dfff4260b86d842a8ace88e6a8688d167980695803487ae9283fd11ea

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8126cbad3df8758936a9465297613d57df0594af1b3239dfe1a11cbe69ab33f9
MD5 71a2f2fff98eed9a1e42d751ab27a469
BLAKE2b-256 41765df23b179245530ae29f1f1f5e9b2bf4f3169093f327b499bd471622a4fb

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6e9b6478508683cd8c5409760b3349c4554a43a07f41315828dc4b27b3c9d7d3
MD5 16cf615f22ca6299e1366f4fc300ea86
BLAKE2b-256 0297b9534509ed2b71633651be62ed5995b4b9b0b919e0943a3bf1e26c89a29e

See more details on using hashes here.

File details

Details for the file glum-2.4.1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for glum-2.4.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cbd1ea0bf1d263dc669bdd3b4bf5b9d6dad7ef62d8554b0d4f88284e96e0c54f
MD5 095049ab44b922fe6cf29adf176016c8
BLAKE2b-256 5d1a8a45904fbbe4272b310a55c4a36202d6079e72270a3c2013e9f576b577ba

See more details on using hashes here.

Supported by

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