LoRAS: An oversampling approach for imbalanced datasets
Project description
LoRAS
Localized Random Affine Shadowsampling
This repo provides a python implementation of an imbalanced dataset oversampling
technique known as Localized Random Affine Shadowsampling (LoRAS). This implementation
piggybacks off the package imbalanced-learn
and thus aims to be as compatible
as possible with it.
Dependencies
imbalanced-learn
Installation
Using pip
:
$ pip install -U pyloras
Installing from source requires an installation of poetry and the following shell commands:
$ git clone https://github.com/zoj613/pyloras.git
$ cd pyloras/
$ poetry install
# add package to python's path
$ export PYTHONPATH=$PWD:$PYTHONPATH
Usage
from collections import Counter
from pyloras import LORAS
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=20000, n_features=5, n_informative=5,
n_redundant=0, n_repeated=0, n_classes=3,
n_clusters_per_class=1,
weights=[0.01, 0.05, 0.94],
class_sep=0.8, random_state=0)
lrs = LORAS(random_state=0, embedding_params={'perplexity': 35, 'n_iter': 250})
print(sorted(Counter(y).items()))
# [(0, 270), (1, 1056), (2, 18674)]
X_resampled, y_resampled = lrs.fit_resample(X, y)
print(sorted(Counter(y_resampled.astype(int)).items()))
# [(0, 18674), (1, 18674), (2, 18674)]
Visualization
Below is a comparision of imbalanced-learn
's SMOTE
implementation with LORAS
on the dummy data used in this doc page using the default parameters.
The plots can be reproduced by running:
$ python scripts/compare_oversamplers.py --n_neighbors=<optional> --n_shadow=<optional> --n_affine=<optional>
References
Bej, S., Davtyan, N., Wolfien, M. et al. LoRAS: an oversampling approach for imbalanced datasets. Mach Learn 110, 279–301 (2021). https://doi.org/10.1007/s10994-020-05913-4
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyloras-0.1.0b2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a35825c42bd71d4a7677854e090611f7f0de2b2877c14b0724207feaff33e551 |
|
MD5 | a66a32e84c38e835e0bff79aa1aee4b8 |
|
BLAKE2b-256 | 7445fa1330d6cbf90f0263786726c66e5343c6214b3dacb53a3b587466519ecf |