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
sphericizeto 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ee55d1eea23cbd06ce05b8b0ec9e8fbbf003952a1d09eb064b664b3131badc1
|
|
| MD5 |
8af9111b5bb99865758150bd3e61bb23
|
|
| BLAKE2b-256 |
149fb16fcdf8ad1571802837202d306fbdbf6713b9516fafe72eb1e469eec069
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65b75a6d3794b453459b65800a1fb7b2e4d4b8b286885ab69b0eb0196715ded3
|
|
| MD5 |
1471d478bcfe6359dad57b1a8ae2d6ff
|
|
| BLAKE2b-256 |
bf950cb5cb6a8ef89c367c1628a17e66cfa9ec5f0bb03119049114a9be480c44
|