Implementação dos algoritmos de árvore de decisão ID3, C4.5 e CART do zero
Project description
Árvores de Decisão - Henrique Soares
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
- GitHub: @HenriqueSoares28
- Projeto: lista4_ia
Desenvolvido como projeto educacional para demonstrar a implementação de algoritmos de árvore de decisão do zero.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa3e4187b4a3e5cfe98d163386dcb9c36699f268535f5b6f86d2f1df2bc8c505
|
|
| MD5 |
12b634323efb786afc290e425289d71e
|
|
| BLAKE2b-256 |
297c1449b8027a2c7a21db48eb078a1adde359ea3dfd70e02df05fb7b4aa8f2d
|
File details
Details for the file arvores_henrique_soares-1.0.1-py3-none-any.whl.
File metadata
- Download URL: arvores_henrique_soares-1.0.1-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e769f0d723533e5adad86558a04aab63daeee0868d5448e385a1bffba5ba0d09
|
|
| MD5 |
d87806b4d4c80ad7350c196e9e383ab0
|
|
| BLAKE2b-256 |
0bbf28434fc1597edb0e2f54446b3b7e617f73ee35ccc0a47d807b1aff4a0f5f
|