Nos meus exemplos anteriores ao escrever algumas coisas ‘hard-coded’ eu percebi que é importânte falar sobre esse assunto. Desenvolver um software eficiente e de fácil manutenção não se trata apenas de escrever código limpo e organizado. Uma parte fundamental é a capacidade de gerenciar as configurações e os parâmetros de forma eficaz. É ai que entram os arquivos de configuração, uma prática que pode tornar o desenvolvimento e a administração do sistema muito mais simples.
Quando começamos o desenvolvimento de um novo projeto, muitas vezes nos deparamos com variáveis que armazenam informações cruciais para o funcionamento do software. Isso inclui informações como URLs de banco de dados, chaves de API, configurações de servidores, entre outras configurações. No entanto, é uma má prática codificar esses valores diretamente no código. Dentro os motivos, posso citar alguns:
Arquivos de configuração são projetados para armazenar variáveis e configurações em um formato que pode ser facilmente lido e modificado sem a necessidade de modificar o código. Algumas vantagens:
Para melhorar ainda mais o gerenciamento de configurações, é uma prática comum criar um arquivo ‘config.yaml’ dedicado para armazenar variáveis importantes. Essas variáveis são frequentemente escritas em letras maiúsculas para indicar que são constantes e não devem ser alteradas diretamente no código.
# Configurações de Path
data_directory: /caminho/para/dados
data_filename: dataset.csv
target_name: coluna10
columns_to_drop: [coluna1, coluna4, coluna7]
test_size: 0.2
# Configurações de modeloagem
model_directory: /caminho/para/modelo
model_filename: modelo.pkl
hyperparameters:
learning_rate: 0.01
n_estimators: 100
max_depth: 10
A implementação de arquivos de configuração envolve os seguintes passos:
import yaml
# Carregue o arquivo de configurações
with open('config.yaml') as file:
config = yaml.safe_load(file)
# Acesse as variáveis do arquivo
data_directory = config['data_directory']
data_filename = config['data_filename']
target_name = config['target_name']
...
learning_rate = config['learning_rate']
n_estimators = config['n_estimators']
max_depth = config['max_depth']
# Agora é possivel utilizar essas variaveis no codigo
print(f"Data directory: {data_directory})
print(f"Learning Rate: {learning_rate})
print(f"Max Depth: {max_depth})
Dessa forma, é possível acessar as variáveis do arquivo YAML e usa-las no código Python conforme necessário. No caso acima o confi.yaml estava no mesmo diretório do arquivo python, caso contrário é preciso apontar corretamente para o seu diretório local.
A utilização de arquivos de configuração, como o ‘config.yaml’, é uma prática recomendade no desenvolvimento do seu software de ML. Ela simplifica o gerenciamento de configurações, torna o código mais seguro e facilita a adaptação a diferentes ambientes. Ao implementar essa prática nos projetos, você aumenta a organização e a eficiência no desenvolvimento e mantenabilidade do modelo.