¡Perfecto! Una vez entrenado tu primer modelo de Random Forest con scikit-learn, es fundamental evaluarlo correctamente para entender su rendimiento. Aquí te explico cómo hacerlo paso a paso:
✅ 1. Predicción en datos de prueba
y_pred = rf_model.predict(X_test)
También puedes obtener las probabilidades de clase si lo necesitas:
y_proba = rf_model.predict_proba(X_test)
📊 2. Métricas de evaluación
a. Exactitud (Accuracy)
from sklearn.metrics import accuracy_score
print("Accuracy:", accuracy_score(y_test, y_pred))
b. Reporte de Clasificación (precision, recall, f1-score)
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred, target_names=iris.target_names))
c. Matriz de confusión
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=iris.target_names,
yticklabels=iris.target_names)
plt.xlabel('Predicción')
plt.ylabel('Real')
plt.title('Matriz de Confusión')
plt.show()
🧠 3. Importancia de características
Para entender qué variables son más relevantes:
import pandas as pd
importances = pd.Series(rf_model.feature_importances_, index=iris.feature_names)
importances.sort_values(ascending=True).plot(kind='barh')
plt.title('Importancia de las características')
plt.show()
🧪 4. Validación cruzada (opcional)
Para evaluar el modelo de forma más robusta:
from sklearn.model_selection import cross_val_score
scores = cross_val_score(rf_model, X, y, cv=5)
print("Accuracy promedio con CV:", scores.mean())
🔍 Resultado esperado
Con un dataset como el Iris, podrías obtener:
- Accuracy > 0.95
- Una matriz de confusión clara
- Las características más importantes (ej.
petal length o petal width)