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.3.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.3-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: NBCS-1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 1c3fd59824b5b7c4b707b09b26e8f4839f69cc3b6c04dffd94e6372e819f03a3
MD5 7abe6329d35e3379f85916057ca4bdd0
BLAKE2b-256 1943c94410efba839ed3a24ef5bffe44f6c0e52268b2c25b2e7ce3567e114ee8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: NBCS-1.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6dfff6ba729d92b358ba6cdcf9d0ca6869f49e64160952deb046ff7e06892c78
MD5 d64ca66d79ea1acd24b4890517623626
BLAKE2b-256 34dcf841d9454e3dff75147a1584b88d5c994c0e7fcc3dcf0f89a88d6b5d31f1

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