• 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

  • pandas para manejar datos

  • train_test_split para separar datos de entrenamiento y prueba

  • RandomForestClassifier para el modelo

  • classification_report y confusion_matrix para 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 pasado

  • test_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 árboles

  • max_depth=None → árboles pueden crecer libremente

  • model.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

or to participate.