Metadata-Version: 2.4
Name: phyto_nas_tsc
Version: 0.1.5
Summary: Phyto Neural Architecture Search for Time Series Classification
Home-page: https://github.com/carmelyr/Phyto-NAS-T
Author: Carmely Reiska
Author-email: reiskacarmely@gmail.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.19.0
Requires-Dist: pandas>=1.0.0
Requires-Dist: torch>=1.8.0
Requires-Dist: pytorch-lightning>=1.4.0
Requires-Dist: scikit-learn>=1.2.0
Requires-Dist: tqdm>=4.0.0
Provides-Extra: dev
Requires-Dist: pytest>=6.0.0; extra == "dev"
Requires-Dist: black>=21.0; extra == "dev"
Requires-Dist: flake8>=3.9.0; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Phyto-NAS-TSC

An evolutionary approach to automatically design optimal neural network architectures for time series classification tasks.

## Installation

```bash
pip install phyto-nas-tsc

## Installation directly from source
git clone https://github.com/carmelyr/Phyto-NAS-T.git
cd Phyto-NAS-T
pip install -e .

## Features

- Evolutionary algorithm for architecture search
- Optimized for time series data (1D signals)
- Optimized for LSTM model
- Tracks optimization history and metrics
- GPU-accelerated training

## Quickstart

```python
import numpy as np
from phyto_nas_tsc import fit
# from importlib.resources import files             # uncomment to use built-in data

# OPTION 1: Use your own data
X = np.random.randn(100, 1, 10)                     # 100 samples, 1 timestep, 10 features
y = np.zeros((100, 2))                              # one-hot encoded labels
y[:50, 0] = 1                                       # first 50 samples = class 0
y[50:, 1] = 1                                       # next 50 samples = class 1

# OPTION 2: Use built-in dataset (uncomment below)
# data_dir = str(files('phyto_nas_tsc.data'))       # path to included data
# X, y = None, None                                 # let the package load data automatically

# Run optimization
result = fit(
    X=X,                                            # comment out if using built-in data
    y=y,                                            # comment out if using built-in data
    # data_dir=data_dir,                            # uncomment if using built-in data
    scoring='accuracy',                             # metric to optimize 
    others={
        'population_size': 5,    # required
        'generations': 3,        # required
        'early_stopping': True   # optional
    }
)

print(f"Best Accuracy: {result['accuracy']:.4f}")
print("Best Architecture:")
for param, value in result['architecture'].items():
    print(f"  {param}: {value}")
```
