Fase 4 Modelagem dos Algoritmos - PadawanXXVI/projeto_ams GitHub Wiki
🤖 Fase 4 – Modelagem dos Algoritmos
Na Fase 4 da metodologia CRISP-DM, aplicamos técnicas de aprendizado de máquina para construir modelos preditivos capazes de identificar estudantes com risco de evasão escolar. O foco desta etapa está na seleção, treinamento e comparação de diferentes algoritmos de classificação supervisionada.
🧪 Preparação para modelagem
Antes do treinamento, os dados passaram por:
- Transformação da variável-alvo em binária
- Codificação de variáveis categóricas
- Separação em conjuntos de treino e teste (70% / 30%), com estratificação para manter a proporção da variável
Class
.
from sklearn.model_selection import train_test_split
X = df.drop("Class", axis=1)
y = df["Class"]
x_train, x_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, stratify=y, random_state=42
)
🧠 Algoritmos utilizados
Foram testados seis modelos supervisionados clássicos, escolhidos por sua representatividade, popularidade e desempenho em problemas de classificação:
Modelo | Tipo | Biblioteca |
---|---|---|
Random Forest | Ensemble de Árvores | sklearn.ensemble |
Regressão Logística | Linear Probabilístico | sklearn.linear_model |
Naive Bayes (Gaussian) | Probabilístico | sklearn.naive_bayes |
SVM (Support Vector Machine) | Classificação por margens | sklearn.svm |
Gradient Boosting | Boosting de Árvores | sklearn.ensemble |
MLP (Rede Neural) | Rede Neural Multicamadas | sklearn.neural_network |
⚙️ Treinamento dos modelos
modelos = [
RandomForestClassifier(n_estimators=100, random_state=42),
LogisticRegression(max_iter=1000),
GaussianNB(),
svm.SVC(),
GradientBoostingClassifier(n_estimators=100),
MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(15,), max_iter=1000)
]
modelos_treinados = [modelo.fit(x_train, y_train) for modelo in modelos]
Obs.: Utilizamos tratamento de exceção para capturar eventuais falhas em tempo de execução, mantendo a execução contínua.
🧾 Considerações sobre os modelos
- Random Forest: robusto e com bom desempenho em variáveis categóricas
- Logistic Regression: altamente interpretável, base para comparação
- GaussianNB: rápido, porém com suposições fortes de independência
- SVM: útil para margens máximas, mas sensível a escala
- Gradient Boosting: geralmente muito eficaz, porém mais lento
- MLPClassifier: rede neural leve, eficaz com tuning adequado
🧠 Escolha do melhor modelo
A seleção foi baseada na métrica acurácia, com a seguinte função:
from sklearn.metrics import accuracy_score
acuracias = [accuracy_score(y_test, modelo.predict(x_test)) for modelo in modelos_treinados]
melhor_modelo = modelos_treinados[np.argmax(acuracias)]
✅ Conclusões da Fase 4
- Todos os modelos foram treinados com sucesso
- A acurácia foi medida de forma uniforme e padronizada
- O melhor modelo foi salvo para reutilização e implantação futura