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

Manos a la obra: análisis y selección de modelos de regresión lineal

# Importación de librerías necesarias para el análisis y modelado
import pandas as pd # Para manipulación de datos
import seaborn as sns # Para visualización estadística
import matplotlib.pyplot as plt # Para control de gráficos
from sklearn.model_selection import train_test_split # Para dividir los datos en entrenamiento y prueba
from sklearn.linear_model import LinearRegression # Algoritmo de regresión lineal
from sklearn.metrics import mean_squared_error, r2_score # Métricas de evaluación

df = pd.read_csv('/content/hoteis.csv')
  1. análisis inicial con el PairPlot de Seaborn;
sns.pairplot(df, diag_kind='kde')
plt.suptitle('Análisis de Relaciones: PairPlot del Dataset de Hoteles', y=1.02)
plt.show()

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

  1. construir modelos de regresión lineal;
# Definimos las variables independientes (X) y la variable objetivo (y: Preco)
X = df[['Estrelas', 'ProximidadeTurismo', 'Capacidade']]
y = df['Preco']

# Dividimos los datos: 80% para entrenamiento y 20% para pruebas
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Regresión Lineal Simple
model_simple = LinearRegression() # Inicializamos el modelo
model_simple.fit(X_train[['ProximidadeTurismo']], y_train) # Entrenamos con una sola variable
y_pred_simple = model_simple.predict(X_test[['ProximidadeTurismo']]) # Generamos predicciones

# Regresión Lineal Múltiple
model_multiple = LinearRegression() # Inicializamos el segundo modelo
model_multiple.fit(X_train, y_train) # Entrenamos con todas las características
y_pred_multiple = model_multiple.predict(X_test) # Generamos predicciones
  1. realizar la comparación de estos modelos.
def mostrar_metricas(nombre, y_true, y_pred):
    mse = mean_squared_error(y_true, y_pred)
    r2 = r2_score(y_true, y_pred) 
    print(f"Resultados para {nombre}:")
    print(f" - Error Cuadrático Medio (MSE): {mse:.2f}")
    print(f" - Coeficiente de Determinación (R2): {r2:.4f}")
    print("-" * 30)

# resultados comparativos
print("COMPARACIÓN DE MODELOS\n")
mostrar_metricas("Modelo Simple (Distancia)", y_test, y_pred_simple)
mostrar_metricas("Modelo Múltiple (Todas las variables)", y_test, y_pred_multiple)

# Visualización
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred_multiple, alpha=0.5, label='Modelo Múltiple', color='blue')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--', lw=2, label='Ideal')
plt.xlabel('Precio Real')
plt.ylabel('Precio Predicho')
plt.title('Comparación: Precio Real vs Predicho (Modelo Múltiple)')
plt.legend()
plt.show()

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola César, espero que estés bien

Parece que estás trabajando en un análisis de regresión lineal para fijar precios de habitaciones de hoteles. Vamos a revisar lo que has hecho y cómo podrías mejorar o interpretar tus resultados.

Análisis Inicial

El PairPlot que has generado es una excelente manera de visualizar las relaciones entre las variables. Observa especialmente las correlaciones entre "ProximidadeTurismo" y "Preco", que parecen tener una relación inversa significativa.

Construcción de Modelos

Has creado dos modelos de regresión lineal:

  1. Regresión Lineal Simple: Utilizando solo "ProximidadeTurismo" como predictor.
  2. Regresión Lineal Múltiple: Utilizando "Estrelas", "ProximidadeTurismo" y "Capacidade".

Comparación de Modelos

Los resultados muestran que el modelo múltiple tiene un mejor desempeño:

  • Modelo Simple:

    • MSE: 16146.54
    • R²: 0.4602
  • Modelo Múltiple:

    • MSE: 2258.53
    • R²: 0.9245

El modelo múltiple tiene un MSE mucho menor y un R² mucho mayor, lo que indica que es mucho más efectivo para explicar la variabilidad del precio.

Visualización

La gráfica de comparación entre el precio real y el predicho para el modelo múltiple muestra una buena alineación a lo largo de la línea ideal, lo que respalda la eficacia del modelo múltiple.

Sugerencias

  1. Normalización/Estandarización: Considera normalizar o estandarizar tus variables para mejorar la interpretabilidad y el rendimiento del modelo.

  2. Interacción de Variables: Explora posibles interacciones entre variables para capturar relaciones complejas.

  3. Validación Cruzada: Implementa validación cruzada para asegurar la robustez de tus resultados.

Espero que esta revisión te sea útil y te ayude a avanzar en tu análisis. ¡Bons estudios!