- Code En Español
- Posts
- 🎨 🏌️♂️🌲 Random Forest para Decidir si Jugar Golf
🎨 🏌️♂️🌲 Random Forest para Decidir si Jugar Golf
Cómo un modelo de Machine Learning puede ayudarte a decidir si salir a jugar golf según el clima, el viento y tu energía.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
✔ Importamos las librerías necesarias
pandaspara manejar datostrain_test_splitpara separar datos de entrenamiento y pruebaRandomForestClassifierpara el modeloclassification_reportyconfusion_matrixpara evaluar el modelo
🧪 1. Creamos un dataset de ejemplo
# Datos simulados de días pasados
data = {
"prob_lluvia": [10, 80, 20, 15, 60, 5, 50, 90, 25, 40],
"viento_mph": [5, 18, 10, 8, 25, 4, 20, 30, 12, 15],
"temperatura": [72, 55, 78, 70, 60, 80, 65, 58, 75, 68],
"horas_libres": [4, 1, 3, 2, 5, 2, 1, 0, 3, 4],
"energia": [85, 40, 90, 70, 55, 95, 50, 35, 88, 65],
"jugar": [1, 0, 1, 1, 0, 1, 0, 0, 1, 1] # 1 = Sí, 0 = No
}
df = pd.DataFrame(data)
✔ ¿Qué representa este dataset?
Cada fila es un día en el pasado.
La última columna (jugar) dice si fuiste a jugar golf o no.
🧩 2. Dividimos datos en entrenamiento y prueba
X = df.drop("jugar", axis=1)
y = df["jugar"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
✔ ¿Qué significa esto?
X: variables para decidir (lluvia, viento, energía, etc.)y: la decisión real del pasadotest_size=0.3: 30% de los datos serán para pruebas
🌲 3. Creamos y entrenamos el Random Forest
model = RandomForestClassifier(
n_estimators=300,
max_depth=None,
random_state=42
)
model.fit(X_train, y_train)
✔ Explicación rápida
n_estimators=300→ 300 árbolesmax_depth=None→ árboles pueden crecer librementemodel.fit(...)→ aprende los patrones de tus hábitos de golf
🎯 4. Hacemos una predicción para HOY
today = [[15, 10, 74, 3, 80]]
prediction = model.predict(today)
prob = model.predict_proba(today)
✔ ¿Qué significan estos valores?
today = [lluvia, viento, temperatura, horas_libres, energía]
Probabilidad de lluvia: 15%
Viento: 10 mph
Temperatura: 74°F
Horas libres: 3 horas
Energía: 80/100
✔ Resultado
prediction[0] será:
1 → Sí, ve a jugar
0 → No, mejor mañana
prob te da la probabilidad:
probabilidad de NO jugar
probabilidad de SÍ jugar
📊 5. Evaluamos qué tan bien aprende el modelo
y_pred = model.predict(X_test)
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
✔ ¿Por qué esto importa?
Nos dice:
cuántas veces acertó el modelo
cuántas veces se equivocó
precisión
recall
F1 score
🌟 6. ¿Qué factores son más importantes?
importances = model.feature_importances_
for feature, importance in zip(X.columns, importances):
print(f"{feature}: {importance:.3f}")
✔ Esto revela:
¿Importa más la lluvia que el viento?
¿La temperatura afecta mucho?
¿Tu nivel de energía predice si vas a ir?
Es una parte súper poderosa del Random Forest.
🏆 Resultado Final (Ejemplo)
El modelo podría decir:
Predicción: 1 (Sí vas a jugar)
Probabilidad: 84.2%
Factor más influyente: prob_lluvia
Reply