Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Ajustando Modelos de Machine Learning

# ============================================
# Ajuste de hiperparámetros con Grid Search
# Árbol de Decisión
# ============================================

import pandas as pd

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeRegressor

# Cargar dataset California Housing
housing = fetch_california_housing()

X = housing.data
y = housing.target

# Separar entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.30,
    random_state=42
)

# Modelo
modelo = DecisionTreeRegressor(random_state=42)

# Parámetros a evaluar
parametros = {
    'max_depth':[3,5,7,10,None],
    'min_samples_split':[2,5,10],
    'min_samples_leaf':[1,2,4]
}

# Grid Search
grid = GridSearchCV(
    modelo,
    parametros,
    cv=5,
    scoring='neg_mean_squared_error'
)

grid.fit(X_train,y_train)

print("Mejores parámetros:")
print(grid.best_params_)

print("\nMejor score:")
print(grid.best_score_)
# ============================================
# Variables más importantes
# ============================================

import matplotlib.pyplot as plt

mejor_modelo = grid.best_estimator_

importancias = pd.DataFrame({
    'Característica': housing.feature_names,
    'Importancia': mejor_modelo.feature_importances_
})

importancias = importancias.sort_values(
    by='Importancia',
    ascending=False
)

print(importancias)

plt.figure(figsize=(8,5))
plt.bar(importancias["Característica"],
        importancias["Importancia"])
plt.xticks(rotation=45)
plt.title("Importancia de las características")
plt.show()

Mediante la técnica de Grid Search fue posible encontrar la mejor combinación de hiperparámetros para el modelo de Árbol de Decisión, mejorando su rendimiento respecto a utilizar la configuración por defecto. Además, el análisis de importancia de características permitió identificar cuáles variables tienen mayor influencia en las predicciones del modelo. Estas técnicas son fundamentales para optimizar modelos de Machine Learning, ya que permiten aumentar su precisión y comprender mejor qué información aporta más valor al proceso de predicción.

1 respuesta

¡Hola Gino, espero que estés bien!

Parece que estás en el camino correcto con el uso de Grid Search para ajustar los hiperparámetros de tu modelo de Árbol de Decisión. Has configurado adecuadamente el GridSearchCV para buscar los mejores parámetros en tu conjunto de datos de California Housing. Además, el análisis de la importancia de las características es una excelente manera de entender qué variables están influyendo más en tus predicciones.

Una cosa que podrías considerar es verificar el rendimiento de tu modelo ajustado en el conjunto de prueba (X_test y y_test) para asegurarte de que los mejores parámetros encontrados también funcionan bien en datos no vistos. Aquí tienes un ejemplo de cómo podrías hacerlo:

from sklearn.metrics import mean_squared_error

# Predecir en el conjunto de prueba
y_pred = mejor_modelo.predict(X_test)

# Calcular el error cuadrático medio
mse = mean_squared_error(y_test, y_pred)
print(f"Error cuadrático medio en el conjunto de prueba: {mse}")

Este paso te ayudará a confirmar que el ajuste de hiperparámetros ha mejorado realmente el rendimiento del modelo en datos nuevos.

Espero que esta información te sea útil y te deseo mucho éxito en tus estudios de Machine Learning. ¡Sigue adelante con tu aprendizaje!

Espero haber ayudado y buenos estudios!