La evaluación de resultados de un modelo de clasificación con Random Forest en scikit-learn se realiza principalmente con métricas como:
✅ 1. Accuracy (exactitud)
Mide el porcentaje de predicciones correctas sobre el total.
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy del modelo: {accuracy:.2f}")
✅ 2. Matriz de confusión
Muestra cuántos ejemplos se clasificaron correctamente y cuáles fueron confundidos entre clases.
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(5,4))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=le_target.classes_, yticklabels=le_target.classes_)
plt.xlabel("Predicción")
plt.ylabel("Real")
plt.title("Matriz de Confusión")
plt.show()
✅ 3. Reporte de clasificación
Incluye precisión, recall y F1-score para cada clase:
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred, target_names=le_target.classes_))
🔹 Precision: De los que predije como clase X, ¿cuántos eran realmente X?
🔹 Recall: De todos los que eran clase X, ¿cuántos los detecté correctamente?
🔹 F1-score: Promedio ponderado de precisión y recall.
✅ 4. Importancia de características
Para saber qué variables influyen más en el modelo:
importances = model.feature_importances_
for col, imp in zip(X.columns, importances):
print(f"{col}: {imp:.4f}")
🎯 Ejemplo de salida esperada (si se usó el código anterior)
Accuracy del modelo: 0.80
precision recall f1-score support
alto 0.75 1.00 0.86 1
bajo 1.00 0.50 0.67 2
medio 1.00 1.00 1.00 1
accuracy 0.80 4
macro avg 0.92 0.83 0.84 4
weighted avg 0.88 0.80 0.79 4