Skip to main content

The official implementation of CROMP (Constrained Regression with Ordered and Margin-sensitive Parameters). CROMP allows user-defined order among the coefficients, user-defined minimum margins (i.e., percentage gaps) between them, and user-defined lower and upper bounds for each coefficient. In addition, CROMP also allows coefficients without any order or margin restrictions.

Project description

Research Paper Research Paper DOI PyPI - Python PyPI - License PyPI - PyPi Build

✏️ CROMP (Constrained Regression with Ordered and Margin-sensitive Parameters)

This repo provides the official implementation of CROMP (Constrained Regression with Ordered and Margin-sensitive Parameters) along with the test dataset and the test pipeline code to reproduce the benchmarking results as described in the CROMP paper ("Constrained Regression with Ordered and Margin-sensitive Parameters: Application in improving interpretability for regression models with prior knowledge") under publication.

Author: Kaushik Bar

🎯 Quick Info

CROMP allows:

  • User-defined order among the coefficients
  • User-defined minimum margins (i.e., percentage gaps) between the coefficients
  • User-defined lower and upper bounds for each coefficient
  • Coefficients without any order or margin restrictions

This package is both interpretable and accurate. There is no other package / library available in the public domain today with these capabilities.


💻 Installation

Install using PyPI:

pip install cromp

💻 Dependencies

The package depends on:

  • python >= 3.11
  • scipy
  • numpy
  • pandas

The tests depend additionally on:


🚀 Usage

Below is a minimal usage guide. This library aloows flexibility for more fine-grained controls for each coefficient separately. Please go through the tests in addition to see more examples.

>>> from cromp import CROMPTrain, CROMPPredict

>>> df = pd.read_csv("tests/data/ames_house_prices_data.csv")
>>> df_train = df.iloc[:-50, :]
>>> df_test = df.iloc[-50:, :]

>>> target_col = 'SalePrice'
>>> feats_in_asc_order = ['1stFlrSF', 'TotalBsmtSF', 'GrLivArea']
>>> feats_in_no_order = []

>>> # Instantiate model
>>> model = CROMPTrain()

>>> # Configure constraints: 
>>> # (i) Dollar increase for each unit of increase of each of the above factors is bounded between 0 and 100.
>>> # (ii) Dollar increase for each unit increase in 'TotalBsmtSF' is at least 50% more than that for '1stFlrSF'.
>>> # (iii) Dollar increase for each unit increase in 'GrLivArea' is at least 50% more than that for 'TotalBsmtSF'.
>>> # (iv) Zero price for zero area (obviously)!
>>> ret_success = model.config_constraints(feats_in_asc_order, min_gap_pct=0.5, feats_in_no_order, lb=0.0, ub=100.0, no_intercept=True)

>>> # Train
>>> ret_success, cromp_model = model.train(df_train, target_col)

>>> # Predict
>>> model = CROMPPredict(cromp_model)
>>> result = model.predict(df_test)

☕ Contact

Feel free to contact Kaushik Bar if you have any further questions / feedback.

Author Affiliation: Inxite Out Pvt Ltd


Citation

To cite CROMP in your work, please use the following bibtex reference:

@software{Bar_CROMP_Constrained_Regression_2022,
author = {Bar, Kaushik},
license = {MIT},
month = {10},
title = {{CROMP (Constrained Regression with Ordered and Margin-sensitive Parameters)}},
url = {https://github.com/kb-open/CROMP},
year = {2022}
version = {v0.0.3},
publisher = {Zenodo},
doi = {10.5281/zenodo.7152807},
url = {https://doi.org/10.5281/zenodo.7152807},
publisher = {Intelligent Decision Technologies, Volume 19, Issue 6, Pp. 4380-4395, Nov 2025, Sage Journals},
doi = {10.1177/18724981251393590},
url = {https://doi.org/10.1177/18724981251393590}
}

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

cromp-0.1.2.tar.gz (11.5 kB view details)

Uploaded Source

File details

Details for the file cromp-0.1.2.tar.gz.

File metadata

  • Download URL: cromp-0.1.2.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for cromp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2ecfbdad31012c084a3498583c82c91a272b34f8be9912a1a43b1fd995fc0721
MD5 00ae6d0711981ad0b5cb0ce2d2bac792
BLAKE2b-256 0325292640262ef128cbf07411b28c2c8cee93c61ad58e93212cc4dd4094b3a5

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