/sin5007

Tarefas de classificação binária com dataset de classificação de pulsares

Primary LanguagePython

SIN5007 Reconhecimento de padrões

Link para apresentação Link para apresentação

Estrutura do repositório

├── data
│   ├── preprocessed            -- Dados intermediários (pre-processados)
│   ├── results                 -- Resultados
│   └── raw                     -- Dados brutos
├── docs                        -- Documentações do projeto e datasets
├── notebooks                   -- Experimentos em jupyter notebooks
├── outputs                     -- Visualizações de dados
├── src                         -- Scripts utilizados
│   ├── dataviz                 -- Scripts de visualização de dados
│   ├── evaluation              -- Validação cruzada e métricas
│   ├── features                -- Remoção de outliers e train test split
│   ├── train                   -- Treinamento de modelos
│   └── toolbox                 -- Funções auxiliares
├── README.md
├── requirements.txt            -- Bibliotecas necessárias
└── setup.py                    -- Arquivo de configuração do python

Como contribuir

Linux

$ python3 -m venv venv
$ . venv/bin/activate
$ pip install -r requirements

Pipeline

A seguinte pipeline é executada para cada cenário de pré-processamento e modelo implementados.

graph LR;
    A[Dados brutos]
    B[Remoção de outliers]
    C[Pré-processamento]
    D[Estimação de parâmetros]
    E[Métricas de avaliação]
    F[Visualização comparativa das métricas]
    H[Métricas do melhor modelo]
    I[Avaliação do modelo]

    A --> B
    B --> C

    subgraph Treinamento 10-fold cross validation
    subgraph Pipeline do modelo
    C --> D
    end
    D --> I
    end

    I --> H

    H --> E
    H --> F
Loading

Organização do código e como rodar

Classes

classDiagram
class Model {
    + string name
    + ClassifierMixin classifier
    + List[Dict] param_grid
}
class Scenario {
    + string name
    + bool is_balanced
    + string feature_selection
    + Dict metrics
    + List[Tuple] preprocessing_steps
}
class Experiment {
    - Scenario scenario
    - Model model
    + get_hyperparameters_combinarions() : List
    + run(X, y)
}

Experiment --* Model
Experiment --* Scenario
Loading

Para rodar

Todo modelo e cenário de pré-processamento é reaproveitável, para incluir um novo cenário de pré-processamento basta incluir sua classe Scenario em src/train/scenarios.py, do mesmo modo para incluir um novo modelo basta adicionar sua classe Model em src/train/models.py.

Para testar os modelos em todos os cenários, basta rodar no terminal:

$ python src/train/train.py

Contributors

@cabertoldi @igabid @ngalindojr @itsmeale