Saltar al contenido

Regresión lineal

La regresión lineal es una potente herramienta estadística ampliamente utilizada en el aprendizaje automático y el modelado predictivo. Encuentra la línea de mejor ajuste entre una variable dependiente y una o más variables independientes minimizando la suma de los errores al cuadrado entre los valores predichos y los reales.

En esta guía, mostraremos cómo implementar la regresión lineal en Python utilizando scikit-learn. Comenzaremos con una breve introducción a la técnica y sus aplicaciones, y luego pasaremos a una implementación completa.

Introducción a la regresión lineal

La regresión lineal modela la relación entre una variable dependiente y una o más variables independientes. Asume una relación lineal, lo que significa que los cambios en la variable dependiente son proporcionales a los cambios en las variables independientes. Se utiliza ampliamente en finanzas, economía, marketing e ingeniería para predecir tendencias y apoyar la toma de decisiones.

Existen dos tipos principales: regresión lineal simple (una variable independiente) y regresión lineal múltiple (dos o más variables independientes). Esta guía se centra en la regresión lineal múltiple.

Implementación de la regresión lineal con Scikit-learn

Scikit-learn es una popular biblioteca de aprendizaje automático en Python que proporciona herramientas robustas para el análisis y el modelado de datos. Incluye un módulo dedicado a la regresión lineal, lo que simplifica la implementación del modelo.

Paso 1: Importar las bibliotecas necesarias

Antes de poder implementar la regresión lineal con scikit-learn, necesitamos importar las bibliotecas requeridas. Utilizaremos las siguientes bibliotecas:

Importa las bibliotecas necesarias para implementar la regresión lineal con scikit-learn en Python:

python
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

Paso 2: Cargar el conjunto de datos

El siguiente paso es cargar el conjunto de datos que utilizaremos para entrenar nuestro modelo de regresión lineal. Utilizaremos el conjunto de datos de vivienda de California, que es el estándar moderno para tareas de regresión.

Nota: El conjunto de datos de vivienda de Boston fue eliminado de scikit-learn 1.4 debido a preocupaciones éticas. En su lugar, utilizamos el conjunto de datos de vivienda de California.

Carga el conjunto de datos que utilizaremos para entrenar nuestro modelo de regresión lineal usando fetch_california_housing en Python:

python
from sklearn.datasets import fetch_california_housing

california = fetch_california_housing()
california_df = pd.DataFrame(california.data, columns=california.feature_names)
california_df['MedHouseVal'] = california.target

Paso 3: Explorar el conjunto de datos

Antes de poder entrenar nuestro modelo de regresión lineal, necesitamos explorar el conjunto de datos para comprender su estructura y características. Podemos hacer esto convirtiendo el conjunto de datos en un dataframe de pandas y utilizando la función head() para mostrar las primeras filas de los datos.

Convierte el conjunto de datos en un dataframe de pandas en Python:

python
california_df.head()

Paso 4: Preparar los datos para el entrenamiento

El siguiente paso es preparar los datos para entrenar nuestro modelo de regresión lineal. Utilizaremos las características AveRooms y AveBedrms como nuestras variables independientes, y la característica MedHouseVal como nuestra variable dependiente.

Prepara los datos para entrenar nuestro modelo de regresión lineal múltiple en Python:

python
X = california_df[['AveRooms', 'AveBedrms']]
y = california_df['MedHouseVal']

Paso 5: Dividir los datos en conjuntos de entrenamiento y prueba

Para evaluar el rendimiento de nuestro modelo de regresión lineal, necesitamos dividir los datos en conjuntos de entrenamiento y prueba. Utilizaremos la función train_test_split() de scikit-learn para dividir los datos.

Divide los datos en conjuntos de entrenamiento y prueba en Python:

python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

Paso 6: Entrenar el modelo de regresión lineal

El siguiente paso es entrenar el modelo de regresión lineal utilizando el conjunto de entrenamiento. Utilizaremos el método fit() de la clase LinearRegression para entrenar el modelo.

Entrena el modelo de regresión lineal utilizando el conjunto de entrenamiento en Python:

python
regressor = LinearRegression()
regressor.fit(X_train, y_train)

Paso 7: Realizar predicciones sobre los datos de prueba

Una vez entrenado el modelo, podemos utilizarlo para realizar predicciones sobre los datos de prueba. Utilizaremos el método predict() de la clase LinearRegression para hacer las predicciones.

Una vez entrenado el modelo, podemos utilizarlo para realizar predicciones sobre los datos de prueba en Python:

python
y_pred = regressor.predict(X_test)

Paso 8: Evaluar el rendimiento del modelo

Para evaluar el rendimiento de nuestro modelo de regresión lineal, utilizaremos dos métricas: error cuadrático medio (MSE) y coeficiente de determinación (R²). Podemos calcular estas métricas utilizando las funciones mean_squared_error() y r2_score() de scikit-learn.

Calcula el MSE y R^2 en Python:

python
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print('Mean Squared Error:', mse)
print('Coefficient of Determination:', r2)

Paso 9: Visualizar los resultados

Finalmente, podemos visualizar los resultados de nuestro modelo de regresión lineal graficando la línea de regresión y los puntos de datos reales. Podemos utilizar la biblioteca matplotlib para crear la gráfica.

Visualiza los resultados de nuestro modelo de regresión lineal graficando la línea de regresión y los puntos de datos reales en Python:

python
import matplotlib.pyplot as plt

plt.scatter(X_test['AveRooms'], y_test, color='black')
plt.plot(X_test['AveRooms'], y_pred, color='blue', linewidth=3)
plt.title('Linear Regression')
plt.xlabel('Average Rooms per Dwelling')
plt.ylabel('Median House Value (in $100,000s)')
plt.show()

Conclusión

En esta guía, demostramos cómo implementar la regresión lineal en Python utilizando scikit-learn. Cubrimos la importación de bibliotecas, carga y exploración de un conjunto de datos, preparación de características, división de datos, entrenamiento del modelo, realización de predicciones, evaluación del rendimiento y visualización de resultados. Este flujo de trabajo proporciona una base sólida para construir e implementar modelos de regresión en tus propios proyectos de aprendizaje automático.

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.