Un ejemplo práctico en Python utilizando el conjunto de datos de Boston Housing, que es uno de los conjuntos de datos incorporados de scikit-learn.
El objetivo de este ejemplo será ajustar un modelo de regresión lineal múltiple para predecir el precio medio de las viviendas en Boston en función de una serie de características, como la tasa de criminalidad, la cantidad de habitaciones, la proporción de terrenos residenciales, etc.
Para comenzar, importaremos las bibliotecas necesarias, cargaremos el conjunto de datos y lo dividiremos en conjunto de entrenamiento y conjunto de prueba:
# Importamos las bibliotecas necesarias
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# Cargamos los datos de Boston Housing
boston = load_boston()
# Convertimos los datos en un DataFrame de pandas
boston_df = pd.DataFrame(boston.data, columns=boston.feature_names)
# Añadimos la columna de precios
boston_df['PRICE'] = boston.target
# Dividimos los datos en conjunto de entrenamiento y conjunto de prueba
X_train, X_test, y_train, y_test = train_test_split(boston_df[boston.feature_names], boston_df['PRICE'], test_size=0.2, random_state=0)
A continuación, ajustaremos un modelo de regresión lineal múltiple utilizando el conjunto de entrenamiento:
# Creamos un objeto de modelo de regresión lineal
model = LinearRegression()
# Ajustamos el modelo al conjunto de entrenamiento
model.fit(X_train, y_train)
Ahora podemos hacer predicciones utilizando el conjunto de prueba y calcular el error cuadrático medio:
# Hacemos predicciones con el modelo ajustado
y_pred = model.predict(X_test)
# Calculamos el error cuadrático medio
mse = mean_squared_error(y_test, y_pred)
print(f"El error cuadrático medio es: {mse:.2f}")
Finalmente, podemos analizar los coeficientes de regresión para determinar qué variables tienen la mayor influencia en el precio de las viviendas:
# Analizamos los coeficientes de regresión
coef_df = pd.DataFrame({'feature': boston.feature_names, 'coef': model.coef_})
print(coef_df)
El resultado sería un DataFrame con las características y sus coeficientes:
feature coef 0
CRIM -0.116039 1
ZN 0.040669 2
INDUS 0.012051 3
CHAS 2.511246 4
NOX -17.313078 5
RM 3.859728 6
AGE 0.000438 7
DIS -1.493081 8
RAD 0.244302 9
TAX -0.008822 10
PTRATIO -0.975709 11
B 0.007995 12
LSTAT -0.489814
Podemos ver que la mayoría de las características tienen un efecto negativo en el precio de las viviendas, mientras que la variable RM (número de habitaciones) tiene un efecto positivo.