Skip to main content

Fuzzy Linear Discriminant Analysis

Project description

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.

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

bh-0.0.5.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

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

bh-0.0.5-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file bh-0.0.5.tar.gz.

File metadata

  • Download URL: bh-0.0.5.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for bh-0.0.5.tar.gz
Algorithm Hash digest
SHA256 2ee55d1eea23cbd06ce05b8b0ec9e8fbbf003952a1d09eb064b664b3131badc1
MD5 8af9111b5bb99865758150bd3e61bb23
BLAKE2b-256 149fb16fcdf8ad1571802837202d306fbdbf6713b9516fafe72eb1e469eec069

See more details on using hashes here.

File details

Details for the file bh-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: bh-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for bh-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 65b75a6d3794b453459b65800a1fb7b2e4d4b8b286885ab69b0eb0196715ded3
MD5 1471d478bcfe6359dad57b1a8ae2d6ff
BLAKE2b-256 bf950cb5cb6a8ef89c367c1628a17e66cfa9ec5f0bb03119049114a9be480c44

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