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 sona_oversampling import SONA
from sklearn.datasets import make_circles, make_moons, make_blobs

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

# Generate 'Blue-moons' dataset with imbalance
X_moons, y_moons = make_moons(n_samples=(500, 100), noise=0.1, random_state=42)

# Generate imbalanced 'Gaussian cluster' dataset
X_blobs, y_blobs = make_blobs(n_samples=[500, 50], cluster_std=0.5, centers=[[0, 0], [1, 1]], random_state=42)

synthetic_datasets = [
    ("Double circle", (X_circles, y_circles)),
    ("Blue-moons", (X_moons, y_moons)),
    ("Gaussian cluster", (X_blobs, y_blobs))
]

for name, (X_original, y_original) in synthetic_datasets:
  
  X_oversampled, y_oversampled = SONA(X_original, y_original, min_label= 1, new_label=1)
  mask_maj = (y_oversampled == 0)
  mask_min_orig = (y_oversampled == 1)
  mask_min_syn = (y_oversampled == 2)

  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(f"SONA Oversampling: {name} 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')

  plt.show()

Output Double circles Blue moons Gaussian clusters

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.2.tar.gz (4.3 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.2-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sona_oversampling-0.1.2.tar.gz
  • Upload date:
  • Size: 4.3 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.2.tar.gz
Algorithm Hash digest
SHA256 f1a559a48c85c5073ec237920fefe2f724657eb3e1e3291a0f19e77eb06b7b49
MD5 9eecba9558537a8d1f6c8577611dd8e4
BLAKE2b-256 469a27bad130897b8b1806038a7b6f3b167ad8e3dfdc8c375651f28b39a0a8c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sona_oversampling-0.1.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sona_oversampling-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f97f7c546bdd1f4a1a1514c613e87a5c0270321487adb9784ce8d91c81f8e865
MD5 0b667f7124da571ee5c6bb190cc73e9e
BLAKE2b-256 006754c3e9c6ee7dab6ad7788d0a3bd49be6376670d62fca38587cde61b2d93d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sona_oversampling-0.1.2-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