✏️ 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}
}
Metadata
Release files for cromp 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cromp-0.1.2.tar.gz | 11.5 kB | Without provenance | Details for cromp-0.1.2.tar.gz |
Release files / cromp-0.1.2.tar.gz
| Download URL | cromp-0.1.2.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ecfbdad31012c084a3498583c82c91a272b34f8be9912a1a43b1fd995fc0721
|
|
BLAKE2b-256 checksum How to use checksums |
0325292640262ef128cbf07411b28c2c8cee93c61ad58e93212cc4dd4094b3a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.16
|
Security for cromp 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.