Metadata-Version: 2.1
Name: gbfs
Version: 0.1.1
Summary: Graph-Based Feature-Selection Algorithms
Home-page: https://github.com/davidlevinwork/gbfs/
License: MIT
Keywords: feature-selection,automatic-feature-selection,clustering,dimensionality-reduction
Author: David Levin
Author-email: davidlevin40@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Dist: kneed (>=0.8.5,<0.9.0)
Requires-Dist: matplotlib (>=3.8.3,<4.0.0)
Requires-Dist: pandas (>=2.2.1,<3.0.0)
Requires-Dist: scikit-learn (>=1.4.1.post1,<2.0.0)
Requires-Dist: scikit-learn-extra (>=0.3.0,<0.4.0)
Requires-Dist: seaborn (>=0.13.2,<0.14.0)
Project-URL: Documentation, https://davidlevinwork.github.io/gbfs/
Project-URL: Repository, https://github.com/davidlevinwork/gbfs/
Description-Content-Type: text/markdown

## GB-FS

**gbfs** is a comprehensive repository dedicated to advancing Graph-Based Feature Selection methodologies in machine learning. Our project houses two significant contributions to the field: GB-AFS and GB-BC-FS, each developed to address the intricate challenges of feature selection with graph-based solutions.

[![Downloads](https://static.pepy.tech/badge/gbfs)](https://pepy.tech/project/gbfs) [![Downloads](https://static.pepy.tech/badge/gbfs/month)](https://pepy.tech/project/gbfs)

## Table of contents
- [Our Contributions](#our-contributions)
- [Installation](#installation)
- [Usage](#usage)
  - [GB-AFS](#GB-AFS)
    - [Initialization](#Initialization)
    - [Feature-Selection](#Feature-Selection)
    - [Visualization](#visualization)
  - [GB-BC-FS](#GB-BC-FS)
    - [Status](#status)
- [Documentation](#documentation)
- [Contribution](#contribution)
- [Citation](#citation)

## Our Contributions

- **GB-AFS (Graph-Based Automatic Feature Selection)**: A method that automates the process of feature selection for multi-class classification tasks, ensuring the minimal yet most effective set of features is utilized for model training.
  
- **GB-BC-FS (Graph-Based Budget-Constrained Feature Selection)**: Currently in development, this method seeks to enhance feature selection by integrating budget constraints, ensuring the cost of each feature is considered.

## Installation

`gbfs` has been tested with Python 3.10.

**pip**
```bash
$ pip install gbfs 
```

**Clone from GitHub**
```bash
$ git clone https://github.com/davidlevinwork/gbfs.git && cd gbfs
$ poetry install
$ poetry shell
```

## Usage

### GB-AFS

#### Initialization

To begin working with GB-AFS, the first step is to initialize the GB-AFS object:

``` py bash
from gbfs import GBAFS

gbafs = GBAFS(
    dataset_path="path/to/your/dataset.csv",
    separability_metric="your_separability_metric",
    dim_reducer_model="your_dimensionality_reduction_method",
    label_column="class",
)
```

#### Feature-Selection
After initializing the GB-AFS object, you can move forward with the process of selecting features:

``` py bash
selected_features = gbafs.select_features()

print("Selected Feature Indices:", selected_features)
```

#### Visualization
GB-AFS also incorporates a technique for visualizing the chosen features within the feature space, offering insights into their distribution and how distinct they are:

``` py bash
gbafs.plot_feature_space()
```

### GB-BC-FS

#### Status
Currently in development.

## Documentation
For more information on available commands and usage, refer to the [documentation](https://davidlevinwork.github.io/gbfs/).

## Contribution
Contributions to `gbfs` are welcome! If you encounter any issues or have suggestions for improvements, please open an issue.

## Citation
