Skip to main content

Python package that implements an adaptive classification and regression system using simplicial complexes. The package provides a novel approach to handling both binary and multi-class classification problems, as well as regression tasks, by adaptively creating a simplicial decomposition of the feature space.

Project description

NBCS (Nested barycentric coordinate system)

Version: 1.2
License: MIT License
Author: Amit Ronen Email: erankfmn@gmail.com

Overview

NBCS (Non-Binary Classification System) is a Python package that implements an adaptive classification and regression system using simplicial complexes. The package provides a novel approach to handling both binary and multi-class classification problems, as well as regression tasks, by adaptively creating a simplicial decomposition of the feature space.

The package extends scikit-learn's base estimator and transformer interfaces, making it compatible with scikit-learn's ecosystem while providing unique capabilities for handling complex classification boundaries and non-linear regression problems.

Features

  • Adaptive Classification: Automatically adjusts the complexity of the decision boundary based on the data
  • Simplicial Complex Construction: Creates an optimal decomposition of the feature space
  • Multiple Learning Modes:
    • Barry fitting mode for general purpose learning
    • Adaptive fitting mode for classification tasks
  • Regression Support: Handles complex regression problems with piece-wise linear approximations
  • Visualization Tools: Built-in functions for plotting decision boundaries and regression results
  • Scikit-learn Compatible: Implements scikit-learn's BaseEstimator and TransformerMixin interfaces

Installation

You can install the package directly from PyPI using pip:

pip install nbcs

Usage

Classification Example

import numpy as np
from nbcs import NBCS
from sklearn.svm import SVC

# Create and fit the NBCS model
model = NBCS(C=1000, k=4)
embedder = model.fit(X, y)

# Transform the data
points = embedder.transform(X)

# Use with any sklearn classifier
clf = SVC(kernel='linear')
clf.fit(points, y)

Regression Example

from nbcs import NBCS
from sklearn.linear_model import LinearRegression

# Create and fit the NBCS model
model = NBCS(k=3)
embedder = model.fit_barry(X)

# Transform the data
points = embedder.transform(X)

# Use with any sklearn regressor
reg = LinearRegression()
reg.fit(points, y)

Parameters

  • C: Regularization parameter (default=1)
  • k: Number of refinement steps (default=1)

Available Methods

  • fit(X, y): Fits the model using adaptive mode
  • fit_barry(X, y): Fits the model using barry mode
  • add_point(point): Adds a new point to the simplicial complex

Visualization

The package includes several visualization tools:

from nbcs.utils import make_meshgrid, plot_contours

# Create mesh grid for visualization
xx, yy = make_meshgrid(X[:, 0], X[:, 1])

# Plot decision boundaries
plot_contours(ax, clf, xx, yy, xy)

Dependencies

  • numpy
  • scipy
  • scikit-learn
  • matplotlib

Examples

Classification with Regular Polytope

import numpy as np
from nbcs import NBCS
from sklearn.svm import SVC

# Generate synthetic data
N = 1000
D = 2  # dimension
X = np.random.normal(0, 1, (N, D))
y = np.ones(N)

# Create and fit model
model = NBCS(C=1000, k=4)
embedder = model.fit(X, y)

Regression with Multiple Lines

import numpy as np
from nbcs import NBCS
from sklearn.linear_model import LinearRegression

# Generate synthetic data
x = np.linspace(0, 30, 60).reshape(-1, 1)
y = np.sin(x/10) + np.random.normal(0, 0.1, x.shape)

# Create and fit model
model = NBCS(k=3)
embedder = model.fit_barry(x)

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

  • scikit-learn for providing the foundational tools for machine learning in Python
  • numpy and scipy for numerical computations
  • matplotlib for data visualization

Contact

If you have any questions or suggestions, feel free to reach out at erankfmn@gmail.com

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

NBCS-1.4.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

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

NBCS-1.4-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file NBCS-1.4.tar.gz.

File metadata

  • Download URL: NBCS-1.4.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for NBCS-1.4.tar.gz
Algorithm Hash digest
SHA256 2312d6fa8ec03a2c20e5d9ad4a040254a066e35be263dd5e3cf406a0cc2da7c7
MD5 b691df58e65457efd6c4bb74af32e6d1
BLAKE2b-256 e2854b75059597b9ad55bbed1d21238a06b69fca8c0713d4e0305e7a1ffe8bfe

See more details on using hashes here.

File details

Details for the file NBCS-1.4-py3-none-any.whl.

File metadata

  • Download URL: NBCS-1.4-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for NBCS-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 7e8a69c4a310ea766152ba22a554edcf02300c31af73831c58590dbc504c7ffe
MD5 3bb94ab38e19caeae32978650916df86
BLAKE2b-256 4126e75d397c3ac60f2420e31a98aed811b129bec118b7a67230eab760db900a

See more details on using hashes here.

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