Skip to content

caiomaz/trabin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Car Evaluation -- Classificacao com 4 Algoritmos

Autores: Caio Eduardo Tomaz Ferreira, Eliandro de Souza Junior

Primeiro trabalho de Inteligencia Artificial. Classifica a aceitabilidade de carros usando KNN, Naive Bayes, Arvore de Decisao e MLP.

Problema

O dataset Car Evaluation (UCI) avalia a aceitabilidade de veiculos com base em 6 atributos categoricos. O objetivo e classificar um carro em uma de 4 classes de aceitabilidade.

Dataset: 1728 instancias, 6 atributos categoricos, 4 classes.

Atributos

Atributo Valores possiveis Descricao
buying low, med, high, vhigh Preco de compra
maint low, med, high, vhigh Preco de manutencao
doors 2, 3, 4, 5more Numero de portas
persons 2, 4, more Capacidade de passageiros
lug_boot small, med, big Tamanho do porta-malas
safety low, med, high Nivel de seguranca

Distribuicao das classes

Classe Instancias Porcentagem
unacc (inaceitavel) 1210 70,0%
acc (aceitavel) 384 22,2%
good (bom) 69 4,0%
vgood (muito bom) 65 3,8%
Total 1728 100%

Desbalanceamento severo: 70% das instancias sao unacc. A acuracia e enganosa neste cenario — um modelo que chuta sempre unacc teria 70% de acerto. Por isso, a metrica principal de avaliacao e o F1-weighted.

Algoritmos escolhidos

Quatro algoritmos de familias distintas para comparacao:

Algoritmo Familia Como funciona
KNN Baseado em instancia/distancia Classifica pela maioria dos k vizinhos mais proximos
Naive Bayes Probabilistico Estima probabilidades condicionais via teorema de Bayes
Arvore de Decisao Simbolico/regras Particiona o espaco com splits baseados em entropia/gini
MLP Redes neurais Aproxima funcoes com camadas densas e retropropagacao

O objetivo e comparar o desempenho e as caracteristicas de cada abordagem no mesmo problema.

Pre-requisitos

  • Python >= 3.8
  • pip

Como executar

Ambiente virtual (recomendado)

python -m venv venv
source venv/bin/activate      # Linux / macOS
# .\venv\Scripts\activate     # Windows

pip install -r requirements.txt

Dependencias instaladas: scikit-learn, pandas, numpy, matplotlib.

Pre-processamento (obrigatorio, uma vez)

O split treino/teste e compartilhado entre todos os algoritmos para garantir comparacao justa. Execute antes de qualquer algoritmo:

python scripts/preprocessing.py

Isso gera os splits pickle em data/processed/ com divisao 70/30 estratificada (seed=42).

Analise exploratoria (opcional)

python scripts/exploratoria.py

Gera graficos e estatisticas sobre a distribuicao dos dados em output/.

Menu interativo

python main.py

O terminal exibe um menu com as opcoes:

   1 - KNN
   2 - Naive Bayes
   3 - Arvore de Decisao
   4 - MLP
   5 - Executar TODOS os algoritmos
   6 - Exibir resultados salvos
   7 - Pre-processamento dos dados
   0 - Sair
  1. Execute a opcao 7 (pre-processamento) na primeira vez que usar o projeto.
  2. Em seguida, escolha os algoritmos que deseja executar (1 a 4) ou execute todos de uma vez (5).
  3. Use a opcao 6 para consultar resultados de execucoes anteriores.

Execucao individual (alternativa)

python scripts/preprocessing.py       # pre-processamento (uma vez)
python algoritmos/knn/knn.py          # KNN
python algoritmos/naive/naive.py      # Naive Bayes
python algoritmos/arvore/arvore.py    # Arvore de Decisao
python algoritmos/mlp/mlp.py          # MLP

Estrutura do projeto

.
├── main.py                 CLI interativo (ponto de entrada)
├── requirements.txt        dependencias do projeto
├── scripts/
│   ├── preprocessing.py    pre-processamento compartilhado
│   └── exploratoria.py     analise exploratoria dos dados
├── algoritmos/
│   ├── knn/                KNN (k-Nearest Neighbors)
│   ├── naive/              Naive Bayes (CategoricalNB)
│   ├── arvore/             Arvore de Decisao (DecisionTreeClassifier)
│   └── mlp/                MLP (Multilayer Perceptron)
├── data/
│   ├── car.data            dataset original
│   └── processed/          splits pickle (gerados pelo pre-processamento)
├── output/                 saidas da analise exploratoria
└── docs/                   documentacao detalhada dos algoritmos

Documentacao

A pasta docs/ contem a documentacao completa de cada algoritmo, incluindo decisoes de projeto, interpretacao de resultados e comparativos entre metodos.

docs/
  index.md                        indice da documentacao
  knn/01-visao-geral.md           KNN
  naive/01-visao-geral.md         Naive Bayes
  arvore/01-visao-geral.md        Arvore de Decisao
  mlp/01-visao-geral.md           MLP
  geral/
    01-comparativo-knn-naive.md   Comparativo: KNN vs Naive Bayes
    02-comparativo-knn-arvore.md  Comparativo: KNN vs Arvore
    03-comparativo-final.md       Comparativo: todos os 4 algoritmos

Apos executar todos os algoritmos, a leitura recomendada e o comparativo final, que analisa desempenho, trade-offs e a conclusao do projeto.

Resultados (resumo)

Algoritmo Acuracia F1-weighted
KNN 89,4% 0,886
Naive Bayes 85,4% 0,848
Arvore 98,46% 0,9846
MLP 98,46% 0,9846

Arvore de Decisao e MLP empatam no melhor desempenho geral. A Arvore tem a vantagem da interpretabilidade; o MLP, da capacidade de aproximacao.

O dominio dos dois se deve a natureza deterministica do dataset (construido a partir de regras bem definidas de um sistema especialista). KNN sofre com a esparsidade do espaco one-hot; Naive Bayes, com a violacao da independencia entre atributos. Detalhes completos no comparativo final.

Troubleshooting

Problema Causa provavel Solucao
ModuleNotFoundError Dependencias nao instaladas Ative o venv e rode pip install -r requirements.txt
FileNotFoundError: data/processed/ Pre-processamento nao executado Rode a opcao 7 do menu ou python scripts/preprocessing.py
Erro com tkinter no Linux Biblioteca grafica ausente sudo apt install python3-tk (Debian/Ubuntu)
Opcao 6 nao mostra resultados Algoritmo ainda nao foi executado Execute o algoritmo desejado primeiro (opcoes 1-5)

About

1º Trabalho da matéria de Inteligência Artificial (CCOMP7): Avaliação qualitativa de carros

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages