Regresión polinomial en Python
La regresión es una técnica estadística poderosa que se utiliza para modelar la relación entre una variable independiente y una variable dependiente. Aunque la regresión lineal es una de las formas más comunes de regresión, a menudo encontramos relaciones no lineales entre las variables en el mundo real. Para abordar este desafío, existe la regresión polinomial, que permite modelar relaciones no lineales mediante el ajuste de un polinomio a los datos. En este artículo, aprenderemos cómo realizar una regresión polinomial en Python utilizando la biblioteca Scikit-learn.
¿Qué es la Regresión Polinomial?
La regresión polinomial es una extensión de la regresión lineal en la que se ajusta un polinomio a los datos en lugar de una línea recta. Un polinomio es una función matemática que involucra términos con coeficientes y exponentes. La regresión polinomial puede modelar relaciones más complejas y no lineales entre las variables, lo que la hace útil en muchos problemas del mundo real.
Ejemplo
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 5, 10, 17, 26])
X = PolynomialFeatures(2).fit_transform(x)
print(LinearRegression().fit(X, y).predict(X).round(2))
Este código realiza una regresión polinomial de grado 2 utilizando NumPy, scikit-learn y matplotlib. Toma datos de muestra
x
e
y
, transforma los datos a un polinomio de grado 2, entrena un modelo de regresión lineal y realiza predicciones. Luego, dibuja los datos de muestra junto con el polinomio ajustado.
Resultado:
Implementación en Python paso a paso
A continuación, se presentan los pasos para realizar una regresión polinomial en Python utilizando Scikit-learn:
Importar las bibliotecas
Primero, debemos importar las bibliotecas necesarias:
Ejemplo
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
Crear los datos
Para este ejemplo, generaremos algunos datos de muestra para realizar la regresión polinomial:
Ejemplo
import numpy as np
# Datos de muestra
x = np.array([1, 2, 3, 4, 5, 6])
y = np.array([3, 6, 8, 11, 15, 18])
print(y)
Transformar los datos
Antes de realizar la regresión polinomial, debemos transformar los datos para que se ajusten a un polinomio. Utilizaremos la clase
PolynomialFeatures
de Scikit-learn para realizar esta transformación:
Ejemplo
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 5, 10, 17, 26])
X = PolynomialFeatures(2).fit_transform(x)
print(LinearRegression().fit(X, y).predict(X).round(2))
Crear y entrenar el modelo
Ahora que hemos transformado los datos, podemos crear y entrenar nuestro modelo de regresión polinomial:
Ejemplo
# Crear el modelo de regresión lineal
model = LinearRegression()
# Entrenar
# Entrenar el modelo con los datos transformados
model.fit(x_poly, y)
print(model)
print(model)
Realizar predicciones
Con nuestro modelo entrenado, podemos hacer predicciones sobre nuevos datos:
Ejemplo
# Datos para hacer predicciones
x_new = np.array([7, 8])
# Tran
# Transformar los datos a un polinomio de grado 2
x_new_poly = transformer.transform(x_new[:, np.newaxis])
# Realizar predicciones
y_pred = model.predict(x_new_poly)
print(y_pred)
Visualizar los resultados
Finalmente, podemos visualizar los resultados de nuestra regresión polinomial:
Ejemplo
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()
plt.ylabel('Y')
plt.legend()
pltplt.show()
La regresión polinomial es una herramienta útil para modelar relaciones no lineales entre variables. En Python, podemos realizar una regresión polinomial utilizando la biblioteca Scikit-learn, lo que nos permite ajustar un polinomio a los datos y hacer predicciones sobre nuevos valores. Con esta técnica, podemos mejorar la precisión de nuestros modelos y obtener una mejor comprensión de los datos en problemas del mundo real.
Otro ejemplo
En el siguiente ejemplo se realiza una regresión polinomial de grado 2 utilizando los datos
x
e
y
. Realiza la transformación de los datos, entrena un modelo de regresión lineal y realiza predicciones. Luego, grafica los datos de muestra junto con el polinomio ajustado.
Ejemplo
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 5, 10, 17, 26])
poly = PolynomialFeatures(degree=2)
x_poly = poly.fit_transform(x)
modelo = LinearRegression().fit(x_poly, y)
print(modelo.predict(poly.transform([[6]])))
Resultado:
Practica Regresión polinomial en Python en el editor
Pon en práctica lo aprendido con nuestro editor Python interactivo. Cada ejercicio incluye el código de partida y un botón para abrirlo en una nueva pestaña, donde puedes modificarlo y ejecutarlo.
Ejercicio: Regresión lineal
La regresión polinomial es una extensión de la regresión lineal en la que se ajusta un polinomio a los datos en lugar de una línea recta. Un polinomio es una función matemática que.
Ejemplo
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 5, 10, 17, 26])
poly = PolynomialFeatures(degree=2)
x_poly = poly.fit_transform(x)
modelo = LinearRegression().fit(x_poly, y)
print(modelo.predict(poly.transform([[6]])))
Ejercicio: Regresión lineal (2)
Para este ejemplo, generaremos algunos datos de muestra para realizar la regresión polinomial.
Ejemplo
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 5, 10, 17, 26])
X = PolynomialFeatures(2).fit_transform(x)
print(LinearRegression().fit(X, y).predict(X).round(2))
Ejercicio: Regresión lineal (3)
Antes de realizar la regresión polinomial, debemos transformar los datos para que se ajusten a un polinomio. Utilizaremos la clase PolynomialFeatures de.
Ejemplo
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x = np.array([1, 2, 3, 4]).reshape(-1, 1)
y = np.array([1, 4, 9, 16])
X = PolynomialFeatures(2).fit_transform(x)
print(LinearRegression().fit(X, y).coef_)
Ejercicio: Convertir a lista
Ahora que hemos transformado los datos, podemos crear y entrenar nuestro modelo de regresión polinomial.
Ejemplo
import numpy as np
x = np.linspace(-2, 2, 5)
y = x ** 2
print(list(zip(x.round(2), y.round(2))))
Ejercicio: Crear un array NumPy
Con nuestro modelo entrenado, podemos hacer predicciones sobre nuevos datos.
Ejemplo
import numpy as np
from sklearn.metrics import r2_score
y_true = np.array([3, 5, 7])
y_pred = np.array([2.8, 5.1, 6.9])
print(r2_score(y_true, y_pred))
Ejercicio: Usar print()
Finalmente, podemos visualizar los resultados de nuestra regresión polinomial.
Ejemplo
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
print(PolynomialFeatures(degree=3).fit_transform([[2]]))
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.