Metadata-Version: 2.4
Name: pyccea
Version: 1.0.1
Summary: Cooperative co-evolutionary algorithms for feature selection in high-dimensional data
Author-email: "Pedro Vinícius A. B. Venâncio" <pedbrgs@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/pedbrgs/PyCCEA
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: imbalanced-learn==0.13.0
Requires-Dist: kneed==0.8.5
Requires-Dist: numpy==2.2.0
Requires-Dist: pandas==2.2.3
Requires-Dist: scikit-learn==1.6.1
Requires-Dist: scipy==1.15.3
Requires-Dist: toml==0.10.2
Requires-Dist: tqdm==4.65.0
Requires-Dist: tqdm-joblib==0.0.4
Requires-Dist: pyarrow==20.0.0
Requires-Dist: fsspec==2025.5.1
Provides-Extra: dev
Requires-Dist: pytest==8.3.5; extra == "dev"
Requires-Dist: pytest-cov==6.1.1; extra == "dev"
Requires-Dist: pytest-asyncio==0.26.0; extra == "dev"
Requires-Dist: pytest-deadfixtures==2.2.1; extra == "dev"
Requires-Dist: pytest-mock==3.14.0; extra == "dev"
Dynamic: license-file

<p align="center">
    <img width="150" src="./docs/figures/logo.png" alt="PyCCEA logo">
<p>

[![codecov](https://codecov.io/gh/pedbrgs/PyCCEA/branch/main/graph/badge.svg?token=4X58GY16J4)](https://codecov.io/gh/pedbrgs/PyCCEA)
[![status](https://joss.theoj.org/papers/dd1af373a617c14953d289c085c38d8f/status.svg)](https://joss.theoj.org/papers/dd1af373a617c14953d289c085c38d8f)

***

## :bulb: Overview

PyCCEA is an open-source package developed as part of ongoing doctoral research. It provides cooperative co-evolutionary strategies tailored for feature selection in large-scale and high-dimensional problems. The framework adopts a modular, decomposition-based approach and is intended for researchers and practitioners tackling complex feature selection tasks.

> **Note:** PyCCEA is a work in progress. Stay tuned for improvements and new algorithm implementations.

## :computer: Installation

To install the package directly from PyPI, use the following command:

```
pip install pyccea
```

Alternatively, if you want to install the latest version directly from the GitHub:


```
pip install git+https://github.com/pedbrgs/pyccea.git
```

Ensure you have `pip` and an active internet connection to download dependencies.

## :high_brightness: Quickstart

This quickstart demonstrates how to use the CCFSRFG1 algorithm — a CCEA variant with random feature grouping — to perform feature selection on the Wisconsin Diagnostic Breast Cancer (WDBC) dataset.

In this example, you will:

- Load the dataset using the `DataLoader` utility.
- Configure the dataset and algorithm from `.toml` files.
- Run the optimization process.


```python
import toml
import importlib.resources
from pyccea.coevolution import CCFSRFG1
from pyccea.utils.datasets import DataLoader

# Load dataset parameters
with importlib.resources.open_text("pyccea.parameters", "dataloader.toml") as toml_file:
    data_conf = toml.load(toml_file)

# Initialize the DataLoader with the specified dataset and configuration
data = DataLoader(dataset="wdbc", conf=data_conf)
# Prepare the dataset for the algorithm (e.g., preprocessing, splitting)
data.get_ready()

# Load algorithm-specific parameters
with importlib.resources.open_text("pyccea.parameters", "ccfsrfg.toml") as toml_file:
    ccea_conf = toml.load(toml_file)

# Initialize the cooperative co-evolutionary algorithm
ccea = CCFSRFG1(data=data, conf=ccea_conf, verbose=False)
# Start the optimization process
ccea.optimize()
```

The best feature subset found is stored in the attribute `best_context_vector`, a binary array where 1 indicates a selected feature and 0 indicates an unselected one.

## :scroll: Citation info

If you are using these codes in any way, please let them know your source:

```
@Misc{PyCCEA,
    title = {PyCCEA: A Python package of cooperative co-evolutionary algorithms for feature selection in high-dimensional data},
    author = {Pedro Vinicius A. B. Venancio},
    howPublished = {\url{https://github.com/pedbrgs/PyCCEA}},
    year = {2024}
}
```

***

## :mailbox: Contact
Please send any bug reports, questions or suggestions directly in the repository.
