6.1. Configure seus projetos de ciência de dados com Hydra#
6.1.1. Introdução#
Hydra é uma ferramenta simples para gerenciar configurações complexas em Python. Para instalar o Hydra, digite:
pip install hydra-core
Se estiver usando o Poetry, então digite:
poetry add hydra-core
O vídeo abaixo mostra alguns recursos simples do Hydra.
Imagine que seu arquivo de configuração YAML seja assim:
process:
keep_columns:
- Income
- Recency
- NumWebVisitsMonth
- Complain
- age
- total_purchases
- enrollment_years
- family_size
remove_outliers_threshold:
age: 90
Income: 600000
Para acessar a lista em process.keep_columns
no arquivo de configuração, basta adicionar o decorator @hydra.main
à função que usa a configuração:
import hydra
from omegaconf import DictConfig, OmegaConf
@hydra.main(config_path="../config", config_name="main")
def process_data(config: DictConfig):
print(config.process.keep_columns)
process_data()
Saída:
['Income', 'Recency', 'NumWebVisitsMonth', 'Complain', 'age', 'total_purchases', 'enrollment_years', 'family_size']
6.1.2. Group Configuration Files#
Imagine a estrutura do seu diretório config
assim:
config
├── main.yaml
└── process
├── process_1.yaml
├── process_2.yaml
├── process_3.yaml
└── process_4.yaml
Cada arquivo tem valores diferentes para os mesmos parâmetros. Você pode definir os parâmetros no arquivo process_2.yaml
como padrão adicionando o seguinte a main.yaml
:
defaults:
- process: process_2
- _self_
Agora os parâmetros em main.yaml
são mesclados com os parâmetros em process_2.yaml
.
Executando o arquivo print_config.py
:
python print_config.py
Deve imprimir:
# Do process_2.yaml
process:
keep_columns:
- Income
- Recency
- NumWebVisitsMonth
- Complain
- age
- total_purchases
- enrollment_years
- family_size
remove_outliers_threshold:
age: 90
Income: 600000
family_size:
Married: 2
Together: 2
Absurd: 1
Widow: 1
YOLO: 1
Divorced: 1
Single: 1
Alone: 1
# Do main.yaml
raw_data:
path: data/raw/marketing_campaign.csv
intermediate:
dir: data/intermediate
name: scale_features.csv
path: ${intermediate.dir}/${intermediate.name}
flow: all
image:
kmeans: image/elbow.png
clusters: image/cluster.png
6.1.3. Sobrescrever Parâmetros Padrão#
HTML('<iframe width="560" height="315" src="https://www.youtube.com/embed/t9hwWxBnU0o?start=167" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>')
Você também pode substituir os parâmetros padrão na linha de comando. Por exemplo, para substituir process_2
por process_1
, execute o seguinte:
python print_config.py process=process_1
A saída deve ser a combinação de todos os parâmetros em main.yaml
e em process_1.yaml
:
# Do process_1.yaml
process:
keep_columns:
- Income
- Recency
- NumWebVisitsMonth
- AcceptedCmp3
- AcceptedCmp4
- AcceptedCmp5
- AcceptedCmp1
- AcceptedCmp2
- Complain
- Response
- age
- total_purchases
- enrollment_years
- family_size
remove_outliers_threshold:
age: 90
Income: 600000
family_size:
Married: 2
Together: 2
Absurd: 1
Widow: 1
YOLO: 1
Divorced: 1
Single: 1
Alone: 1
# Do main.yaml
raw_data:
path: data/raw/marketing_campaign.csv
intermediate:
dir: data/intermediate
name: scale_features.csv
path: ${intermediate.dir}/${intermediate.name}
flow: all
image:
kmeans: image/elbow.png
clusters: image/cluster.png