Skip to main content

MGS-GRF

CI Status Linting , formatting, imports sorting: ruff Pre-commit License

Python Versions PyPI Version cite

If you face imbalance data in your machine learning project, this package is here to pre-process your data. It is an efficient and ready-to-use implementation of MGS-GRF, an oversampling strategy designed to handle large-scale and mixed imbalanced data-set — with both continuous and categorical features.

The MGS-GRF package is supported by two peer-reviewed publications:

    A paper at AISTATS 2026 introducing the algorithm for continuous input: Do we need rebalancing strategies? A theoretical and empirical study around SMOTE and its variants 📄

    A paper at ECML-PKDD 2025 presenting the extension of MG to categorical features (MGS-GRF): Harnessing Mixed Features for Imbalance Data Oversampling: Application to Bank Customers Scoring 📄

🛠 Installation

From Pypi:

pip install mgs-grf

From source:

git clone git@github.com:artefactory/mgs-grf.git

And install the required packages into your environment (conda, mamba or pip):

pip install -r requirements.txt

💻 How to use the MGS-GRF Algorithm to learn on imbalanced data

Here is a short example on how to use MGS-GRF:

from mgs_grf import MGSGRFOverSampler

## Apply MGS-GRF procedure to oversample the data
mgs_grf = MGSGRFOverSampler(categorical_features=categorical_features, random_state=0)
X_train_balanced, y_train_balanced = mgs_grf.fit_resample(X_train_imbalanced, y_train_imbalanced)

## Encode the categorical variables
enc = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
X_train_balanced_enc = np.hstack((X_train_balanced[:,numeric_features],
                                  enc.fit_transform(X_train_balanced[:,categorical_features])))
X_test_enc = np.hstack((X_test[:,numeric_features], enc.transform(X_test[:,categorical_features])))

# Fit the final classifier on the augmented data
clf = lgb.LGBMClassifier(n_estimators=100, verbosity=-1, random_state=0)
clf.fit(X_train_balanced_enc, y_train_balanced)

A more detailed notebook example is available in this notebook.

🙏 Acknowledgements

This work was done through a partenership between Artefact Research Center and the Laboratoire de Probabilités Statistiques et Modélisation (LPSM) of Sorbonne University.

   

📜 Citation

If you find the code useful, please consider citing us :

@inproceedings{sakho2024we,
  title={Do we need rebalancing strategies? A theoretical and empirical study around SMOTE and its variants},
  author={Sakho, Abdoulaye and Malherbe, Emmanuel and Scornet, Erwan},
  booktitle={The 29th International Conference on Artificial Intelligence and Statistics},
  year={2026},
  organization={PMLR}
}
@inproceedings{sakho2025harnessing,
  title={Harnessing Mixed Features for Imbalance Data Oversampling: Application to Bank Customers Scoring},
  author={Sakho, Abdoulaye and Malherbe, Emmanuel and Gauthier, Carl-Erik and Scornet, Erwan},
  booktitle={Joint European Conference on Machine Learning and Knowledge Discovery in Databases},
  pages={247--264},
  year={2025},
  organization={Springer}
}

Metadata

Release files for mgs-grf 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mgs-grf 0.1.0
File Size Uploaded
mgs_grf-0.1.0.tar.gz 15.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mgs-grf 0.1.0
File Interpreter ABI Platform
mgs_grf-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.6 kB

Release files / mgs_grf-0.1.0.tar.gz

Download URL mgs_grf-0.1.0.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
30952f5c24bd07b58b078823aed1efb4d99c994ae601e91959cff0dbd53867dc
BLAKE2b-256 checksum
How to use checksums
0558d3937aec0efacd14df038924c8628591f08841ef57abd56fdfb22a8177ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / mgs_grf-0.1.0-py3-none-any.whl

Download URL mgs_grf-0.1.0-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5f09fa6aa5e49d429d6ac75716e66d33bd5d29c6556cda17c13c61be329b2150
BLAKE2b-256 checksum
How to use checksums
bacd773ad6e4c483812020c10454f2215111cc0b6256b503cbe65904b80cd232
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page