Skip to main content

Á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.

Metadata

Release files for arvores-henrique-soares 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arvores-henrique-soares 1.0.1
File Size Uploaded Provenance Actions
arvores_henrique_soares-1.0.1.tar.gz 15.9 kB Without provenance Details for arvores_henrique_soares-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for arvores-henrique-soares 1.0.1
File Interpreter ABI Platform Actions
arvores_henrique_soares-1.0.1-py3-none-any.whl Python 3 none any Details for arvores_henrique_soares-1.0.1-py3-none-any.whl

Total release size: 36.3 kB

Release files / arvores_henrique_soares-1.0.1.tar.gz

Download URL arvores_henrique_soares-1.0.1.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
aa3e4187b4a3e5cfe98d163386dcb9c36699f268535f5b6f86d2f1df2bc8c505
BLAKE2b-256 checksum
How to use checksums
297c1449b8027a2c7a21db48eb078a1adde359ea3dfd70e02df05fb7b4aa8f2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / arvores_henrique_soares-1.0.1-py3-none-any.whl

Download URL arvores_henrique_soares-1.0.1-py3-none-any.whl
Size 20.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e769f0d723533e5adad86558a04aab63daeee0868d5448e385a1bffba5ba0d09
BLAKE2b-256 checksum
How to use checksums
0bbf28434fc1597edb0e2f54446b3b7e617f73ee35ccc0a47d807b1aff4a0f5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Security for arvores-henrique-soares 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page