Skip to main content

Machine learning regression off-the-shelf

Project description

*** ATTENTION ***

Don't immidiately run pip install mlregression. See Section Installation.

Machine learning regression (mlregression)

Machine Learning Regression (mlregrresion) is an off-the-shelf implementation of the most popular ML methods that automatically takes care of fitting and parameter tuning.

Currently, the fully implemented models include:

  • Ensemble trees (Random forests, XGBoost, LightGBM, GradientBoostingRegressor, ExtraTreesRegressor)
  • Penalized regression (Ridge, Lasso, ElasticNet, Lars, LassoLars)
  • Neural nets (Simple neural nets with 1-5 hidden layers, rely activation, and early stopping)

NB! When using penalized regressions, consider using the native CV-implementation from scikit-learn for speed, e.g., simply set estimator="LassoCV" similar to Example 1.

Scikit-learn regressors (together with XGBoost and LightGBM) can be estimated by setting the estimator-argument equal to the name (string) as in Example 1 (estimator="RandomForestRegressor"). Alternatively, one can provide an instance of an estimator, e.g., estimator=RandomForestRegressor(). Again, this is fully automated for most Scikit-learn regressors, but for non-standard methods, one would have to provide a parameter grid as well, e.g., param_grid={...}.

Please contact the authors below if you find any bugs or have any suggestions for improvement. Thank you!

Author: Nicolaj Søndergaard Mühlbach (n.muhlbach at gmail dot com, muhlbach at mit dot edu)

Code dependencies

This code has the following dependencies:

  • Python >=3.6
  • numpy >=1.19
  • pandas >=1.3
  • scikit-learn >=1
  • scikit-learn-intelex >= 2021.3
  • daal >= 2021.3
  • daal4py >= 2021.3
  • tbb >= 2021.4
  • xgboost >=1.5
  • lightgbm >=3.2

Installation

Before calling pip install mlregression, we recommend using conda to install the dependencies. In our experience, calling the following command works like a charm:

conda install -c conda-forge numpy">=1.19" pandas">=1.3" scikit-learn">=1" scikit-learn-intelex">=2021.3" daal">=2021.3" daal4py">=2021.3" tbb">=2021.4" xgboost">=1.5" lightgbm">=3.2" --force-reinstall

After this, install mlregression by calling pip install mlregression. Note that without installing the dependensies, the package will not work. As of now, it does not work when installing the dependensies via pip install. The reason is that we are using the Intel® Extension for Scikit-learn to massively speed up computations, but the dependensies are not properly installed via pip install.

Usage

We demonstrate the use of mlregression below, using random forests, xgboost, and lightGBM as underlying regressors.

#------------------------------------------------------------------------------
# Libraries
#------------------------------------------------------------------------------
# Standard
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

# This library
from mlregression.mlreg import MLRegressor

#------------------------------------------------------------------------------
# Data
#------------------------------------------------------------------------------
# Generate data
X, y = make_regression(n_samples=500,
                       n_features=10, 
                       n_informative=5,
                       n_targets=1,
                       bias=0.0,
                       coef=False,
                       random_state=1991)

X_train, X_test, y_train, y_test = train_test_split(X, y)

#------------------------------------------------------------------------------
# Example 1: Prediction
#------------------------------------------------------------------------------
# Specify any of the following estimators:
"""
"LinearRegression",
"RidgeCV", "LassoCV", "ElasticNetCV",
"RandomForestRegressor","ExtraTreesRegressor", "GradientBoostingRegressor",
"XGBRegressor", "LGBMegressor",
"MLPRegressor",
"""

# For instance, pick "RandomForestRegressor"
estimator = "RandomForestRegressor"
# Note that the 'estimator' may also be an instance of a class, e.g., RandomForestRegressor(), conditional on being imported first, e.g. from sklearn.ensemble import RandomForestRegressor

# Instantiate model and choose the number of parametrizations to examine using cross-validation ('max_n_models') and the number of cross-validation folds ('n_cv_folds')
mlreg = MLRegressor(estimator=estimator,
                    n_cv_folds=5,
                    max_n_models=2)

# Fit
mlreg.fit(X=X_train, y=y_train)

# Predict
y_hat = mlreg.predict(X=X_test)

# Access all the usual attributes
mlreg.best_score_
mlreg.best_estimator_

# Compute the score
mlreg.score(X=X_test,y=y_test)

#------------------------------------------------------------------------------
# Example 2: Cross-fitting
#------------------------------------------------------------------------------
# Instantiate model and choose the number of parametrizations to examine using cross-validation ('max_n_models'), the number of cross-validation folds ('n_cv_folds'), AND the number of cross-fitting folds ('n_cf_folds')
mlreg = MLRegressor(estimator=estimator,
                    n_cv_folds=5,
                    max_n_models=2,
                    n_cf_folds=2)

# Cross fit
mlreg.cross_fit(X=X_train, y=y_train)

# Extract in-sample that are estimated in an out-of-sample way (e.g., via cross-fitting)
y_hat = mlreg.y_pred_cf_

# Likewise, extract the residualized outcomes used in e.g., double machine learning. This is \tilde{Y} = Y - E[Y|X=x]
y_res = mlreg.y_res_cf_

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

mlregression-0.1.10.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

mlregression-0.1.10-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

Details for the file mlregression-0.1.10.tar.gz.

File metadata

  • Download URL: mlregression-0.1.10.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

File hashes

Hashes for mlregression-0.1.10.tar.gz
Algorithm Hash digest
SHA256 ba365d26a693e6d60feb37947edf9e05cfdb154ef4dd0f3a5b731c31a68d21bd
MD5 8c52fe19428f99c12468e6e7c30d8bff
BLAKE2b-256 ecb885a0e6d41da0cc6934acc4fd78d72a1b8b32f32c3e19bd584b6d99c394bb

See more details on using hashes here.

File details

Details for the file mlregression-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: mlregression-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 24.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

File hashes

Hashes for mlregression-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 da8be6e1130041294bf634c3e4f2ff5a2a5ff6831c98c7cb4a18adc0e8197d4f
MD5 aeed499a1bd14e3eb64432531e129201
BLAKE2b-256 8c8302b831b52c02ade6951073ec0dcbc37505144945f564bfb5505fd7be3325

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