Classificação com Árvore de Decisão
Visão Geral
Aplicação do algoritmo de Árvore de Decisão para classificação supervisionada, com avaliação de desempenho e comparação com Naive Bayes.
Resultados
| Métrica | Valor |
|---|---|
| Acurácia — Treino | 100% |
| Acurácia — Teste | 94% |
| Comparativo | Árvore superou Naive Bayes neste dataset |
Fluxo do Projeto
- Leitura das bases de treino balanceado e teste
- Separação entre atributos (X) e variável alvo (y)
DecisionTreeClassifier(criterion='gini', random_state=0)- Base de treino balanceada para evitar viés de classe
- Acurácia em treino e teste
classification_reporte matriz de confusão
- Ranking das variáveis mais relevantes
- Novo modelo treinado apenas com as 2 principais features
- Comparativo de desempenho
- Árvore de Decisão vs. Naive Bayes
- Análise de adequação ao tipo de dado
Implementação
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.metrics import accuracy_score, classification_report
import matplotlib.pyplot as plt
# Treinamento
clf = DecisionTreeClassifier(criterion='gini', random_state=0)
clf.fit(X_train, y_train)
# Avaliação
print(f"Acurácia treino : {accuracy_score(y_train, clf.predict(X_train)):.2%}")
print(f"Acurácia teste : {accuracy_score(y_test, clf.predict(X_test)):.2%}")
# Visualização da árvore
plt.figure(figsize=(20, 10))
plot_tree(clf, filled=True, feature_names=X_train.columns)
plt.show()
# Feature importance
importances = pd.Series(clf.feature_importances_, index=X_train.columns)
importances.sort_values().plot(kind='barh')
Stack Utilizada
- Python 3.x · Pandas · Scikit-learn
- Matplotlib — visualização da árvore e feature importance
- Jupyter Notebook — ambiente de experimentação
Evoluções Futuras
- [ ] Tuning de hiperparâmetros com GridSearchCV
- [ ] Comparativo com Random Forest e Gradient Boosting
- [ ] Deploy do modelo com FastAPI