Os cursos estão separados por pastas, contendo os arquivos necessários para acompanhar as anotações e rodar os códigos em notebooks Jupyter. Em cada pasta, procure um arquivo com o nome de notebook.ipynb
para ler as anotações de estudo e rodar os códigos. Eventualmente também haverá arquivos desafio.ipynb
contendo a resolução para exercícios propostos em um curso.
- Os Jupyter Notebooks são uma forma de mesclar células (blocos) de texto (em formato Markdown) com células de códigos Python, sendo que os códigos podem ser executados no próprio notebook, tendo sua saída exibida logo abaixo da célula correspondente. Eles podem ser reconhecidos pela sua extensão
.ipynb
.
Os cursos estão na seguinte ordem (clique no link para ir até a pasta do curso):
-
(extra) Machine Learning: Credit Scoring. É um curso adicional que eu fiz, que não está na formação, trabalhando com dados bancários e um classificador de regressão logística.
Os instrutores utilizaram o Google Colab como IDE, mas eu utilizei o VS Code. Somente em um curso tive resultados diferentes (métricas e hiperparâmetros com valores diferentes) por conta dessa escolha, e acredito que se deve ao Colab ter mais poder de computação e cálculo mais preciso de ponto flutuante.
No VS Code é possível criar um ambiente virtual no Python, de modo a poder instalar os packages/bibliotecas Python localmente. Com isso, posso ter diferentes ambientes virtuais, cada um com packages e versões específicas, sem correr o risco de conflitos de bibliotecas e versões entre os projetos.
- Criação do ambiente virtual. Você pode escolher o nome que desejar em
nome_do_ambiente_virtual
python -m venv nome_do_ambiente_virtual
-
É criada uma pasta com o nome que você escolheu. Essa pasta é grande, então não recomendo versioná-la.
-
Ative o ambiente virtual antes de começar a instalar as packages desejadas.
.\nome_do_ambiente_virtual\Scripts\activate
Observação: o VS Code possui uma extensão para usar notebooks Jupyter. Com ela instalada, é possível selecionar um ambiente virtual e utilizá-lo para executar o notebook, sem a necessidade de ativar o ambiente virtual manualmente via terminal.
- Ao rodar um notebook utilizando um ambiente virtual, pode ser que o VS Code solicite a instalação de pacotes adicionais.
- Instale as packages e versões que desejar. Exemplo instalando o Pandas na versão 1.5.3
pip install pandas==1.5.3
-
Comando para desinstalar um package:
pip uninstall nome_do_pacote
; -
Comando para listar todos os packages instalados:
pip list
; -
Para desativar um ambiente virtual:
deactivate
.
Os dois primeiros cursos são um bom resumo das partes mais importantes para se lidar com problemas de classificação. O terceiro curso é um exemplo lidando com problema de multiclassificação (a maioria dos outros cursos irá usar exemplos com classificação binária).
Modelos de Machine Learning para resolver problemas de classificação seguem uma mesma linha de passos "macro":
-
Obter a base e fazer as transformações necessárias;
-
Separar dados de treino e teste;
-
Escolher um modelo;
-
Validar o modelo com os dados de treino;
-
Testar o modelo com os dados de teste;
-
Salvar o modelo.
Para cada um, podemos dividir em alguns sub-passos:
-
Obter a base e fazer as transformações necessárias
-
pd.readCSV
-
EDA (Exploratory Data Analysis)
-
tratamento de dados nulos
-
codificação das colunas: label encoding, one-hot encoding, etc.
-
-
Separar dados de treino e teste
-
X (variáveis explicativas) e y (variável alvo)
-
train_test_split
- segundo split para ter dados de treino, validação e teste
-
normalização: min-max, etc.
- cuidados com data leakage
-
balanceamento: oversampling, undersampling
-
-
Escolher um modelo
-
otimização de hiperparâmetros (tuning): grid search, random search, otimização Bayesiana, validação cruzada aninhada
-
seleção de features: matriz de correlação,
feature_importances_
,SelectFromModel
,RFE
-
estratégias de bagging e boosting, voting e stacking
-
Validar o modelo com os dados de treino
-
score()
-
métricas (acurácia, precisão, recall, F1-score, AUC, etc.)
-
matriz de confusão (TP, TN, FP, FN)
- ver no curso de problemas multiclasse como ler a matriz de confusão maior que 2x2
-
curva ROC
-
validação cruzada (KFold, StratifiedKfold, etc)
-
-
Avaliar o modelo com os dados de teste
predict
epredict_proba
-
Salvar o modelo
-
arquivos Pickle
-
bibliotecas:
pickle
ejoblib
.
-
Os passos 3 e 4 podem ser repetidos para avaliar diferentes modelos ou um mesmo modelo com diferentes configurações de hiperparâmetros. Escolhido um modelo, segue para o passo 5.
Na formação, dois tópicos extras foram abordados:
-
XGBoost: é um classificador mais robusto utilizando árvores CART e uma estratégia de boosting para problemas de classificação (também pode ser usado em problemas de regressão). O curso abordou a técnica de forma bem básica, mais voltado para a prática.
-
Aprendizado semi-supervisionado: utilizado quando a base de dados possui entradas não-rotuladas, isto é, a variável alvo possui valores nulos. Neste caso, podemos utilizar uma mistura de aprendizado supervisionado com alguma estratégia para lidar com dados não rotulados (pseudo labelling, self-training, label propagation).