Este projeto tem como objetivo desenvolver modelos preditivos baseados em Aprendizado de Máquina para classificar compostos químicos quanto à sua mutagenicidade segundo o teste de Ames. O teste de Ames é amplamente utilizado para avaliar o potencial mutagênico e cancerígeno de substâncias químicas.
Tarefa: Classificação binária (mutagênico/não-mutagênico)
Dataset: Ames Mutagenicity Dataset
Fonte: https://data.mendeley.com/datasets/ktc6gbfsbh/2
Referência: Martínez et al. (2022) - "Multi-Task Deep Neural Networks for Ames Mutagenicity Prediction"
Machine-Learning/
│
├── data/ # Dados do projeto
│ ├── raw/ # Dados originais (não modificados)
│ │ ├── ames_mutagenicity_data.csv
│ │ └── README (1).txt # Descrição do dataset original
│ └── processed/ # Dados processados (gerados pelos notebooks)
│
├── notebooks/ # Jupyter Notebooks (implementação principal)
│ ├── 01_exploratory_analysis.ipynb # Análise Exploratória de Dados
│ ├── 02_data_preprocessing.ipynb # Pré-processamento
│ └── 03_model_spotchecking.ipynb # Spot-checking de algoritmos
│
├── results/ # Resultados dos experimentos (gerados automaticamente)
│ ├── figures/ # Gráficos e visualizações
│ │ ├── eda/ # Figuras da EDA (figure_1.png, figure_2.png, figure_3.png)
│ │ └── models/ # Figuras de desempenho dos modelos
│ │ ├── models_comparison.png
│ │ ├── confusion_matrix_*.png
│ │ └── ranking_*.png
│ └── metrics/ # Métricas de desempenho (CSV)
│ ├── eda_summary.txt
│ ├── preprocessing_summary.txt
│ ├── spot_checking_results.csv
│ └── test_results.csv
│
├── machine-learning-py3.13.5/ # Ambiente virtual (não versionado)
│
├── .gitignore # Arquivos ignorados pelo git
├── .vscode/settings.json # Configurações do VS Code/Cursor
├── requirements.txt # Dependências do projeto
└── README.md # Este arquivo
Realizar spot-checking de algoritmos de aprendizado supervisionado para classificação de mutagenicidade, incluindo:
-
Análise Exploratória dos Dados (EDA)
- Caracterização do dataset
- Análise de distribuições
- Identificação de padrões e anomalias
- Verificação de desbalanceamento de classes
-
Pré-processamento dos Dados
- Tratamento de valores faltantes (se necessário)
- Normalização/padronização de features
- Seleção de features relevantes
- Balanceamento de classes (se necessário)
-
Definição da Abordagem
- Seleção de algoritmos diversificados (≥5)
- Definição de métricas de avaliação
- Escolha da estratégia de validação
-
Spot-checking de Algoritmos
- Treinamento e avaliação dos modelos
- Comparação de desempenho
- Identificação dos 2-3 algoritmos mais promissores
O dataset contém informações sobre compostos químicos avaliados pelo teste de Ames:
- Instâncias: 5,536 compostos (após pré-processamento)
- Features: 1,359 descritores moleculares numéricos (após remoção de metadados e features problemáticas)
- Target: Classes mutagênicas
- 1 (mutagênico): 56.05% das amostras
- -1 (não-mutagênico): 39.78% das amostras
- 0 (indefinido): 4.17% das amostras (removido no pré-processamento)
- Características: Dataset de alta dimensionalidade, sem valores faltantes após limpeza, desbalanceamento moderado
- Python 3.8+ (recomendado: Python 3.13.5)
- pip
- Dataset:
ames_mutagenicity_data.csv
Antes de executar os notebooks, certifique-se de que o dataset está na pasta correta:
- Baixe o dataset de: https://data.mendeley.com/datasets/ktc6gbfsbh/2
- Coloque o arquivo
ames_mutagenicity_data.csvem:data/raw/
data/
└── raw/
└── ames_mutagenicity_data.csv ← O arquivo deve estar aqui!
Nota: O dataset não está versionado no Git devido ao seu tamanho
Nota: O dataset não está incluído no ZIP de entrega devido ao limite de tamanho do Moodle (16 MB). Baixe-o do link acima e coloque na pasta data/raw/ antes de executar os notebooks.
Para isolar as dependências do projeto, crie e ative um ambiente virtual:
1. Criar ambiente virtual:
python -m venv machine-learning-py3.13.52. Ativar ambiente virtual:
- Windows:
machine-learning-py3.13.5\Scripts\activate- Linux/Mac:
source machine-learning-py3.13.5/bin/activateCom o ambiente virtual ativado:
pip install -r requirements.txt- ✅ Dataset
ames_mutagenicity_data.csvna pastadata/raw/ - ✅ Ambiente virtual ativado
- ✅ Dependências instaladas (
pip install -r requirements.txt)
- Certifique-se de que o ambiente virtual está ativado
- Inicie o Jupyter:
jupyter notebook-
Selecione o kernel correto:
- Kernel:
machine-learning-py3.13.5(Python 3.13.5) - No menu do Jupyter: Kernel → Change Kernel → machine-learning-py3.13.5
- Kernel:
-
Execute os notebooks na ordem:
01_exploratory_analysis.ipynb- Gera 3 figuras emresults/figures/eda/02_data_preprocessing.ipynb- Gera dados processados e resumo03_model_spotchecking.ipynb- Treina 8 modelos, gera métricas e figuras
Nota: Todos os notebooks salvam automaticamente os resultados (figuras, métricas, matrizes de confusão) em results/.
- Abra a pasta do projeto no Cursor/VS Code
- Selecione o interpretador Python correto:
- Ctrl+Shift+P (Windows) ou Cmd+Shift+P (Mac)
- Digite "Python: Select Interpreter"
- Escolha:
machine-learning-py3.13.5/Scripts/python.exe
- Abra e execute os notebooks diretamente no editor
Foram testados 8 algoritmos diversificados, conforme a proposta de spot-checking:
-
Modelos Lineares
- Logistic Regression
- SVM Linear
-
Modelos Baseados em Árvores
- Decision Tree
- Random Forest
-
Modelos de Ensemble/Boosting
- Gradient Boosting
-
Modelos Baseados em Instâncias
- K-Nearest Neighbors (KNN)
-
Modelos Probabilísticos
- Naive Bayes
-
Redes Neurais
- MLP Neural Network
Com base no spot-checking realizado:
- Gradient Boosting - F1: 99.77% (CV), 99.91% (teste)
- Decision Tree - F1: 98.24% (CV), 99.46% (teste)
- Random Forest - F1: 86.43% (CV), 85.94% (teste)
Para detalhes completos sobre a metodologia, resultados e análise, consulte o relatório PDF do trabalho.
Para este problema de classificação multiclasse, foram utilizadas:
- Accuracy - Acurácia geral
- Precision - Precisão ponderada por classe (weighted average)
- Recall - Revocação ponderada por classe (weighted average)
- F1-Score - Métrica principal (weighted average)
- ROC-AUC - Área sob a curva ROC (One-vs-Rest, weighted average)
Métrica principal: F1-Score (balança precisão e revocação)
- Stratified K-Fold Cross-Validation (k=5)
- Holdout validation: 70/30 train/test split (estratificado)
- Random State fixo (42) para reprodutibilidade total
- Multiple runs via cross-validation para análise estatística robusta
- Everton Fritsch de Lima - 00334081
- João Carlos Eggers Fleck - 00332794
- Norberto Schossler De Nardin Teixeira - 00324730
- Curso: INF01017 - Aprendizado de Máquina
- Professora: Mariana Recamonde Mendoza
- Instituição: UFRGS - Instituto de Informática
- Semestre: 2026/1
✅ Trabalho Concluído - Spot-checking de algoritmos finalizado
Próximos passos:
- Otimização de hiperparâmetros dos modelos mais promissores
- Análise de importância de features
- Implementação de técnicas avançadas de ensemble
Este projeto é desenvolvido para fins acadêmicos.
Este projeto utilizou o modelo Claude Sonnet 4.5 (Anthropic) como suporte para:
- Refatoração arquitetural do repositório: Organização da estrutura de pastas e arquivos seguindo boas práticas de projetos de Machine Learning
- Estruturação inicial do código: Criação dos notebooks Jupyter com estrutura padronizada para EDA, pré-processamento e spot-checking de algoritmos
- Configuração do ambiente: Setup de dependências, ambiente virtual e configurações do projeto
Citação: Anthropic. (2026). Claude Sonnet 4.5 [Large language model]. https://claude.ai
A análise de dados, seleção e configuração dos algoritmos (scikit-learn), interpretação dos resultados e redação do relatório foram realizadas pelos autores.
Martínez, M.J., Sabando, M.V., Soto, A.J., Roca, C., Requena-Triguero, C., Campillo, N.E., Páez, J.A., & Ponzoni, I. (2022). Multi-Task Deep Neural Networks for Ames Mutagenicity Prediction. ChemRxiv. DOI: 10.26434/chemrxiv-2022-852tf