Skip to main content

bh: Fuzzy Linear Discriminant Analysis

bh is a Python library implementing Fuzzy Linear Discriminant Analysis (FLDA), an extension of traditional Linear Discriminant Analysis that handles fuzzy or probabilistic class memberships.

Installation

pip install bh

Features

  • Fuzzy Linear Discriminant Analysis: Extends traditional LDA to work with fuzzy class memberships
  • scikit-learn compatible: Implements scikit-learn's estimator interface
  • Dimensionality reduction: Transform high-dimensional data into a lower-dimensional space while preserving class separability
  • Classification: Predict class probabilities and labels for new data points
  • Data preprocessing: Includes utilities like sphericize to transform data to have spherical covariance

Usage

Basic Example

import numpy as np
from bh import FuzzyLDA

# Create some sample data
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
# Fuzzy class membership: each point can partially belong to multiple classes
y = [
    {'class1': 0.8, 'class2': 0.2},
    {'class1': 0.9, 'class2': 0.1},
    {'class1': 1.0, 'class2': 0.0},
    {'class1': 0.1, 'class2': 0.9},
    {'class1': 0.0, 'class2': 1.0},
    {'class1': 0.2, 'class2': 0.8},
]

# Fit model
flda = FuzzyLDA()
flda.fit(X, y)

# Transform data
X_transformed = flda.transform(X)

# Predict on new data
new_data = np.array([[0.8, 1]])
probabilities = flda.predict_proba(new_data)
predicted_class = flda.predict(new_data)

Using with Hard Labels

FLDA also works with traditional hard labels:

from bh import FuzzyLDA

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = [0, 0, 0, 1, 1, 1]  # Hard labels are automatically converted to fuzzy format

flda = FuzzyLDA()
flda.fit(X, y)

Data Preprocessing

from bh import sphericize

X_spherical = sphericize(X, y)

Theory

Fuzzy Linear Discriminant Analysis extends traditional LDA by allowing samples to partially belong to multiple classes. This is particularly useful in scenarios where:

  • Class membership is inherently probabilistic
  • There is uncertainty in class assignments
  • Data points can naturally belong to multiple categories

The algorithm finds a linear transformation that maximizes the ratio of between-class scatter to within-class scatter, while accounting for fuzzy memberships.

License

[License information goes here]

Citation

If you use this software in your research, please cite it.

Release files for bh 0.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bh 0.0.9
File Size Uploaded
bh-0.0.9.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bh 0.0.9
File Interpreter ABI Platform
bh-0.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 20.7 kB

Release files / bh-0.0.9.tar.gz

Download URL bh-0.0.9.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1fbd981edc8a3789e7ce0a923768857ff7bb11d162b87ce8a07838f3077e33b7
BLAKE2b-256 checksum
How to use checksums
a6052dbdcba3dce1a6744ca23454c5c240cf2769faeb710168261b3f1a1c7c44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.13

Release files / bh-0.0.9-py3-none-any.whl

Download URL bh-0.0.9-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fcfe660ca176ab7781f919eb5c1ded62735f523f604cb521af54dfa383bd8559
BLAKE2b-256 checksum
How to use checksums
9dac70f327b70b8a243e01a88eddb8aff0a685f715e92b4ac045039b6a614f88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.13

Release history Release notifications | RSS feed

This release

0.0.9 This release

2 release files

0.0.7

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page