Conheça o projeto
Implemente, utilizando PyTorch ou Keras, um sistema de detecção de Parkinson utilizando Redes Neurais Profundas (Deep MLP) em Python. O sistema deve carregar os dados do Dataset Parkinson's (UCI), realizar pré-processamento e, obrigatoriamente, realizar experimentos variando a profundidade da rede (número de camadas ocultas). Todos os resultados e parâmetros dos experimentos devem ser registrados e comparados utilizando o MLflow.
Recursos
Materiais para você usar como base para o desenvolvimento
Instruções
Estrutura, regras e requisitos do projeto
Utilizar um modelo Multilayer Perceptron (MLP) profundo para realizar uma tarefa de classificação binária no Dataset Parkinson's (UCI) e instrumentar o código com MLflow.
Objetivo
Treinar diferentes arquiteturas de MLP (com pelo menos 2 camadas ocultas) para classificar se um paciente tem Parkinson (status = 1) ou é saudável (status = 0). O objetivo secundário, mas igualmente importante, é utilizar o MLflow para logar os hiperparâmetros (número de camadas, neurônios, learning rate) e as métricas de avaliação, permitindo a comparação entre uma rede rasa e redes mais profundas.
O Dataset Parkinson's (UCI)
Dataset clássico de aprendizado de máquina, ideal para introdução a tarefas de classificação e redes neurais.
- Disponibilidade: O dataset pode ser acessado diretamente pelo link da UCI (link) ou através do arquivo CSV fornecido (
parkinsons.data).
Atributos do Dataset
A tabela abaixo descreve as features (entradas) e a variável alvo (saída):
| Atributo | Descrição | Variável |
|---|---|---|
name | Identificador ASCII do paciente (Deve ser removido) | (Ignorar) |
MDVP:Fo(Hz) | Frequência vocal fundamental média | Entrada |
MDVP:Fhi(Hz) | Frequência vocal fundamental máxima | Entrada |
MDVP:Flo(Hz) | Frequência vocal fundamental mínima | Entrada |
Jitter, RAP, PPQ, DDP | Várias medidas de variação na frequência | Entrada |
Shimmer, APQ, DDA | Várias medidas de variação na amplitude | Entrada |
NHR, HNR | Medidas da proporção de ruído para tom | Entrada |
RPDE, D2 | Medidas de complexidade dinâmica não linear | Entrada |
DFA | Análise de flutuação fractal | Entrada |
spread1, spread2, PPE | Medidas de variação da frequência fundamental | Entrada |
status | Estado de saúde (1 = Parkinson, 0 = saudável) | Alvo (Saída) |
Requisitos
- Configuração do Ambiente:
- Instalar e configurar o MLflow.
- Carregar os dados do arquivo (
parkinsons.dataouparkinsons.csv).
- Pré-processamento:
- Remover a coluna
name. - Separar features (X) e variável alvo (y).
- Obrigatório: Aplicar Padronização (StandardScaler) ou Normalização (MinMaxScaler) nos dados de entrada.
- Remover a coluna
- Experimentação (Deep Learning):
- Criar um loop de experimentos ou definir múltiplas execuções.
- Testar arquiteturas com profundidade crescente (ex: iniciar com 2 camadas ocultas e testar com 3 ou 4).
- Garantir que a rede tenha capacidade de aprender (uso de funções de ativação não-lineares como ReLU).
- Rastreamento com MLflow:
- Para cada experimento, iniciar uma
runno MLflow. - Registrar parâmetros:
num_layers,neurons_per_layer,learning_rate,optimizer. - Registrar métricas:
accuracy,precision,recall,f1_scoreeloss. - (Opcional) Registrar o artefato do modelo treinado ou a figura da Matriz de Confusão.
- Para cada experimento, iniciar uma
- Avaliação:
- Analisar qual arquitetura (profundidade) obteve melhor desempenho no conjunto de teste.
Diretrizes para o Modelo e MLflow
- Profundidade da Rede: Ao contrário de perceptrons simples, aqui você deve explorar o conceito de Deep Learning. Teste configurações onde o sinal passa por múltiplas transformações (ex:
Entrada -> 64 -> 32 -> 16 -> Saída). - MLflow Tracking: Não basta apenas imprimir o resultado no console. O código deve conter chamadas como
mlflow.log_param()emlflow.log_metric(). - Configuração de Ativação:
- Camadas Ocultas: Sugere-se
ReLUouLeakyReLU. - Camada de Saída:
Sigmoid(para probabilidade binária) associada a uma perda binária.
- Camadas Ocultas: Sugere-se
- Função de Perda:
BCELossouBCEWithLogitsLoss.
Passo a passo recomendado
- Setup: Instale o MLflow (
pip install mlflow) e importe as bibliotecas. - Dados: Carregue, limpe (remova
name) e escalone os dados. Divida em Treino/Teste. - Função de Treino: Crie uma função que aceita hiperparâmetros (como número de camadas) e realiza o treinamento completo.
- Experimentos:
- Abra um contexto
with mlflow.start_run():. - Defina uma arquitetura com 2 ou mais camadas ocultas.
- Treine o modelo.
- Logue os parâmetros e as métricas finais no MLflow.
- Abra um contexto
- Comparação: Execute o passo 4 novamente alterando a arquitetura (ex: adicionando mais uma camada ou mudando o número de neurônios) e compare os resultados na interface do MLflow.
Como executar
- Abra o notebook no Jupyter/Colab.
- Faça upload do dataset.
- Execute o comando
mlflow ui(se estiver local) para visualizar os resultados ou verifique os logs no próprio notebook se estiver no Colab/Kaggle. - Execute as células de treinamento e verifique se os experimentos foram registrados.
Entrega
Após concluir o desafio, você deve enviar a URL do seu código no GitHub para a plataforma.
Além disso, que tal fazer um post no LinkedIn mostrando um print da interface do MLflow comparando seus modelos e compartilhando seus insights sobre redes profundas?
Feito com 💜 por Rocketseat 👋
Utilizar um modelo Multilayer Perceptron (MLP) profundo para realizar uma tarefa de classificação binária no Dataset Parkinson's (UCI) e instrumentar o código com MLflow.
Objetivo
Treinar diferentes arquiteturas de MLP (com pelo menos 2 camadas ocultas) para classificar se um paciente tem Parkinson (status = 1) ou é saudável (status = 0). O objetivo secundário, mas igualmente importante, é utilizar o MLflow para logar os hiperparâmetros (número de camadas, neurônios, learning rate) e as métricas de avaliação, permitindo a comparação entre uma rede rasa e redes mais profundas.
O Dataset Parkinson's (UCI)
Dataset clássico de aprendizado de máquina, ideal para introdução a tarefas de classificação e redes neurais.
- Disponibilidade: O dataset pode ser acessado diretamente pelo link da UCI (link) ou através do arquivo CSV fornecido (
parkinsons.data).
Atributos do Dataset
A tabela abaixo descreve as features (entradas) e a variável alvo (saída):
| Atributo | Descrição | Variável |
|---|---|---|
name | Identificador ASCII do paciente (Deve ser removido) | (Ignorar) |
MDVP:Fo(Hz) | Frequência vocal fundamental média | Entrada |
MDVP:Fhi(Hz) | Frequência vocal fundamental máxima | Entrada |
MDVP:Flo(Hz) | Frequência vocal fundamental mínima | Entrada |
Jitter, RAP, PPQ, DDP | Várias medidas de variação na frequência | Entrada |
Shimmer, APQ, DDA | Várias medidas de variação na amplitude | Entrada |
NHR, HNR | Medidas da proporção de ruído para tom | Entrada |
RPDE, D2 | Medidas de complexidade dinâmica não linear | Entrada |
DFA | Análise de flutuação fractal | Entrada |
spread1, spread2, PPE | Medidas de variação da frequência fundamental | Entrada |
status | Estado de saúde (1 = Parkinson, 0 = saudável) | Alvo (Saída) |
Requisitos
- Configuração do Ambiente:
- Instalar e configurar o MLflow.
- Carregar os dados do arquivo (
parkinsons.dataouparkinsons.csv).
- Pré-processamento:
- Remover a coluna
name. - Separar features (X) e variável alvo (y).
- Obrigatório: Aplicar Padronização (StandardScaler) ou Normalização (MinMaxScaler) nos dados de entrada.
- Remover a coluna
- Experimentação (Deep Learning):
- Criar um loop de experimentos ou definir múltiplas execuções.
- Testar arquiteturas com profundidade crescente (ex: iniciar com 2 camadas ocultas e testar com 3 ou 4).
- Garantir que a rede tenha capacidade de aprender (uso de funções de ativação não-lineares como ReLU).
- Rastreamento com MLflow:
- Para cada experimento, iniciar uma
runno MLflow. - Registrar parâmetros:
num_layers,neurons_per_layer,learning_rate,optimizer. - Registrar métricas:
accuracy,precision,recall,f1_scoreeloss. - (Opcional) Registrar o artefato do modelo treinado ou a figura da Matriz de Confusão.
- Para cada experimento, iniciar uma
- Avaliação:
- Analisar qual arquitetura (profundidade) obteve melhor desempenho no conjunto de teste.
Diretrizes para o Modelo e MLflow
- Profundidade da Rede: Ao contrário de perceptrons simples, aqui você deve explorar o conceito de Deep Learning. Teste configurações onde o sinal passa por múltiplas transformações (ex:
Entrada -> 64 -> 32 -> 16 -> Saída). - MLflow Tracking: Não basta apenas imprimir o resultado no console. O código deve conter chamadas como
mlflow.log_param()emlflow.log_metric(). - Configuração de Ativação:
- Camadas Ocultas: Sugere-se
ReLUouLeakyReLU. - Camada de Saída:
Sigmoid(para probabilidade binária) associada a uma perda binária.
- Camadas Ocultas: Sugere-se
- Função de Perda:
BCELossouBCEWithLogitsLoss.
Passo a passo recomendado
- Setup: Instale o MLflow (
pip install mlflow) e importe as bibliotecas. - Dados: Carregue, limpe (remova
name) e escalone os dados. Divida em Treino/Teste. - Função de Treino: Crie uma função que aceita hiperparâmetros (como número de camadas) e realiza o treinamento completo.
- Experimentos:
- Abra um contexto
with mlflow.start_run():. - Defina uma arquitetura com 2 ou mais camadas ocultas.
- Treine o modelo.
- Logue os parâmetros e as métricas finais no MLflow.
- Abra um contexto
- Comparação: Execute o passo 4 novamente alterando a arquitetura (ex: adicionando mais uma camada ou mudando o número de neurônios) e compare os resultados na interface do MLflow.
Como executar
- Abra o notebook no Jupyter/Colab.
- Faça upload do dataset.
- Execute o comando
mlflow ui(se estiver local) para visualizar os resultados ou verifique os logs no próprio notebook se estiver no Colab/Kaggle. - Execute as células de treinamento e verifique se os experimentos foram registrados.
Entrega
Após concluir o desafio, você deve enviar a URL do seu código no GitHub para a plataforma.
Além disso, que tal fazer um post no LinkedIn mostrando um print da interface do MLflow comparando seus modelos e compartilhando seus insights sobre redes profundas?
Feito com 💜 por Rocketseat 👋
Tarefas
Use este checklist para ajudar a organizar a sua entrega
Resolução
Confira os resultados esperados do projeto

Envie o projeto para ver a resolução
Ao enviar seu projeto, você poderá conferir os resultados esperados