Skip to main content

Implementação dos algoritmos de árvore de decisão ID3, C4.5 e CART do zero

Project description

Árvores de Decisão - Henrique Soares

PyPI version Python 3.7+ License: MIT

Implementação educacional completa dos algoritmos de árvore de decisão ID3, C4.5 e CART desenvolvidos do zero em Python.

Esta biblioteca foi criada como material educacional para demonstrar o funcionamento interno dos algoritmos de árvore de decisão, incluindo todas as etapas matemáticas e lógicas de construção das árvores.

🚀 Instalação

pip install arvores-henrique-soares

Dependências

  • Python 3.7+
  • NumPy >= 1.19.0
  • Pandas >= 1.1.0
  • Scikit-learn >= 0.24.0

📚 Uso Básico

Exemplo Simples

from minhas_arvores import ID3, C45, CART
import pandas as pd

# Dados de exemplo
dados = pd.DataFrame({
    'Tempo': ['Sol', 'Sol', 'Nublado', 'Chuva', 'Chuva'],
    'Temperatura': ['Quente', 'Quente', 'Quente', 'Frio', 'Frio'],
    'Humidade': ['Alta', 'Alta', 'Alta', 'Normal', 'Normal'],
    'Vento': ['Fraco', 'Forte', 'Fraco', 'Fraco', 'Forte'],
    'Jogar': ['Não', 'Não', 'Sim', 'Sim', 'Não']
})

X = dados[['Tempo', 'Temperatura', 'Humidade', 'Vento']]
y = dados['Jogar']

# Treinar modelo ID3
modelo = ID3()
modelo.fit(X, y)

# Fazer predição
resultado = modelo.predict({'Tempo': 'Sol', 'Temperatura': 'Quente', 
                          'Humidade': 'Normal', 'Vento': 'Fraco'})
print(f"Predição: {resultado}")

# Visualizar árvore
modelo.imprimir_arvore()

Exemplo com Dados Contínuos (C4.5 e CART)

from minhas_arvores import C45, CART
import pandas as pd

# Dados com atributos contínuos
dados = pd.DataFrame({
    'idade': [25, 35, 45, 55, 65],
    'salario': [35000, 45000, 55000, 65000, 75000],
    'aprovado': ['Não', 'Não', 'Sim', 'Sim', 'Sim']
})

X = dados[['idade', 'salario']]
y = dados['aprovado']

# C4.5 - suporta atributos contínuos
c45 = C45()
c45.fit(X, y)
predicao_c45 = c45.predict({'idade': 40, 'salario': 50000})

# CART - divisões binárias
cart = CART()
cart.fit(X, y)
predicao_cart = cart.predict({'idade': 40, 'salario': 50000})

📊 Algoritmos Implementados

ID3 (Iterative Dichotomiser 3)

  • Critério: Ganho de Informação
  • Tipos de Dados: Apenas categóricos
  • Características: Algoritmo clássico, simples e eficiente para dados categóricos

C4.5

  • Critério: Razão de Ganho (Gain Ratio)
  • Tipos de Dados: Categóricos e contínuos
  • Características:
    • Suporta valores ausentes
    • Discretização automática de atributos contínuos
    • Poda de árvore para evitar overfitting

CART (Classification and Regression Trees)

  • Critério: Índice de Gini
  • Tipos de Dados: Categóricos e contínuos
  • Características:
    • Divisões binárias apenas
    • Robusto e eficiente
    • Base para algoritmos como Random Forest

🔧 Exemplo Completo

Execute o script de exemplo incluído:

git clone https://github.com/HenriqueSoares28/lista4_ia.git
cd lista4_ia
python exemplo_uso.py

📈 Comparação de Performance

O projeto inclui testes com o dataset Titanic e comparação com scikit-learn:

Algoritmo Acurácia Características
ID3 100%* Dados categóricos simples
C4.5 100%* Suporte a contínuos
CART 85.7% Divisões binárias robustas

*Resultados no dataset Play Tennis (categórico)

🏗️ Estrutura do Projeto

minhas_arvores/
├── __init__.py          # Exportações da biblioteca
├── id3.py              # Algoritmo ID3
├── c45.py              # Algoritmo C4.5
├── cart.py             # Algoritmo CART
├── arvore_base.py      # Classe base para nós da árvore
└── utilidades.py       # Funções matemáticas auxiliares

🤝 Contribuições

Contribuições são bem-vindas! Este projeto tem fins educacionais e pode ser expandido com:

  • Novos algoritmos de árvore de decisão
  • Métodos de poda mais avançados
  • Visualizações gráficas das árvores
  • Mais datasets de exemplo

📝 Licença

Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

👨‍💻 Autor

Henrique Soares


Desenvolvido como projeto educacional para demonstrar a implementação de algoritmos de árvore de decisão do zero.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arvores_henrique_soares-1.0.1.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arvores_henrique_soares-1.0.1-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file arvores_henrique_soares-1.0.1.tar.gz.

File metadata

  • Download URL: arvores_henrique_soares-1.0.1.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for arvores_henrique_soares-1.0.1.tar.gz
Algorithm Hash digest
SHA256 aa3e4187b4a3e5cfe98d163386dcb9c36699f268535f5b6f86d2f1df2bc8c505
MD5 12b634323efb786afc290e425289d71e
BLAKE2b-256 297c1449b8027a2c7a21db48eb078a1adde359ea3dfd70e02df05fb7b4aa8f2d

See more details on using hashes here.

File details

Details for the file arvores_henrique_soares-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for arvores_henrique_soares-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e769f0d723533e5adad86558a04aab63daeee0868d5448e385a1bffba5ba0d09
MD5 d87806b4d4c80ad7350c196e9e383ab0
BLAKE2b-256 0bbf28434fc1597edb0e2f54446b3b7e617f73ee35ccc0a47d807b1aff4a0f5f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page