Skip to main content

Stochastic directional Oversampling using Negative Anomalous scores (SONA)

Project description

SONA

Stochastic directional Oversampling using Negative Anomalous scores for imbalanced dataset

Installation

To install SONA, type the following command in the terminal

pip install sona-oversampling            # normal install
pip install --upgrade sona-oversampling  # or update if needed

Required Dependencies :

  • Python 3.9 or higher
  • numpy>=2.0.2
  • scipy>=1.8.1

SONA

The SONA function generates synthetic samples for the minority class by identifying border areas between classes and creating new points within a calculated safety radius.

SONA(X,y, min_label, new_label = 0)

Parameter Type Description
X numpy.ndarray The input feature matrix of shape $(n_{samples}, n_{features})$.
y numpy.ndarray The target labels.
min_label int The specific label identified as the minority class.
new_label int An offset added to min_label for the new synthetic samples (default is 0).

Returns

Parameter Type Description
X_augmented numpy.ndarray containing the original features plus the new synthetic samples.
y_augmented numpy.ndarray containing the original labels plus labels for the synthetic samples.

Usage Example

from sklearn.datasets import make_circles

# Generate 'Double circle' dataset with imbalance
X_circles, y_circles = make_circles(n_samples=(500, 100), noise=0.05, random_state=42)

X_oversampled, y_oversampled = SONA(X_circles, y_circles, min_label= 1, new_label=1)

## Visualization part
# Original Majority (label 0)
mask_maj = (y_oversampled == 0)
# Original Minority (label 1)
mask_min_orig = (y_oversampled == 1)
# Synthetic Minority (label 1 + new_label 1 = 2)
mask_min_syn = (y_oversampled == 2)

# 3. Create the plot
plt.figure(figsize=(10, 8))

# Plot Majority Class
plt.scatter(X_oversampled[mask_maj, 0], X_oversampled[mask_maj, 1], 
            c='grey', label='Majority Class (0)', alpha=0.5, s=20)

# Plot Original Minority Class
plt.scatter(X_oversampled[mask_min_orig, 0], X_oversampled[mask_min_orig, 1], 
            c='blue', label='Original Minority (1)', s=30, edgecolors='k')

# Plot Synthetic Minority Class
plt.scatter(X_oversampled[mask_min_syn, 0], X_oversampled[mask_min_syn, 1], 
            c='red', label='Synthetic Samples (2)', marker='x', s=40, alpha=0.8)

plt.title("SONA Oversampling: Double Circle Dataset", fontsize=14)
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.legend(loc='best')
plt.grid(True, linestyle='--', alpha=0.6)
plt.axis('equal') # Keeps the circles looking like circles

plt.show()

Output Double circle

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

sona_oversampling-0.1.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sona_oversampling-0.1.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file sona_oversampling-0.1.0.tar.gz.

File metadata

  • Download URL: sona_oversampling-0.1.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sona_oversampling-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d05652014e951e16b0eeca8ab36ba688d4c04b20a773e10acc2e7c56bc26bc24
MD5 909a85f3cbd183a84c915c3534e10b64
BLAKE2b-256 ddfa69ae708d100d1b08d9fda8430f8386609466dccaa70d266216d2f4e0e3b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sona_oversampling-0.1.0.tar.gz:

Publisher: publish.yml on oakkao/sona-oversampling

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sona_oversampling-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sona_oversampling-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4928e36d91198de6e1224ffec8f865dbb06a6d0ce401bdd505531b67c553f4c1
MD5 a4c08e9e3d0f9dbf11c7cd1dade1a514
BLAKE2b-256 9820c78987597820fa99b57ea71b9444b1e1cba303eceb0bdfa302e5fe36a4f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for sona_oversampling-0.1.0-py3-none-any.whl:

Publisher: publish.yml on oakkao/sona-oversampling

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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