Metadata-Version: 2.4
Name: phyto_nas_tsc
Version: 0.1.6
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

# OPTION 1: Use your own data (uncomment)
#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                     # let the package load data automatically
# Run optimization
result = fit(
    X=None,                                          # X is None, so the package will load data
    y=None,                                
    data_dir=None,                      
    scoring='accuracy',                                
    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}")
```
