Regresión con Árbol de Decisión

¿Qué aplicamos/usamos aquí?

  • Árbol de Decisión: Un modelo no lineal que divide el espacio de características en regiones homogéneas para hacer predicciones.
  • Modelo de regresión: A diferencia de la clasificación, este modelo predice valores continuos como el precio de una vivienda.
  • Visualización: Se compara la predicción del modelo con los datos reales.

Ver en Colab ➜

########################################################
# Regresión con Árbol de Decisión
########################################################

from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import numpy as np

# Generar datos sintéticos
np.random.seed(42)
X = np.random.rand(100, 1) * 10  # Superficie en m²
y = 3 * X**2 + np.random.normal(0, 5, size=(100, 1))  # Relación cuadrática con ruido

# Dividir datos
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear y entrenar el modelo de Árbol de Decisión
tree_model = DecisionTreeRegressor(random_state=42)
tree_model.fit(X_train, y_train)

# Predicciones
y_pred_train = tree_model.predict(X_train)
y_pred_test = tree_model.predict(X_test)

# Calcular errores
train_mse = mean_squared_error(y_train, y_pred_train)
test_mse = mean_squared_error(y_test, y_pred_test)
print(f"Error cuadrático medio (Entrenamiento): {train_mse}")
print(f"Error cuadrático medio (Prueba): {test_mse}")

# Visualización
plt.scatter(X, y, color="blue", label="Datos")
plt.plot(X, tree_model.predict(X), color="red", label="Modelo Árbol de Decisión")
plt.title("Árbol de Decisión: Predicción de precios")
plt.xlabel("Superficie (m²)")
plt.ylabel("Precio")
plt.legend()
plt.show()