Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Construcción de Regresión Polinómica | Sección
Fundamentos del Aprendizaje Supervisado

bookConstrucción de Regresión Polinómica

Carga de archivo

Cargamos poly.csv e inspeccionamos el contenido:

1234
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
copy

Luego, visualizar la relación:

12345
import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
copy

Una línea recta se ajusta de manera deficiente, por lo que la regresión polinómica es más adecuada.

Aquí se presenta la sección reescrita adaptada para Scikit-learn.

Construcción de la matriz transformada

Para crear características polinómicas, se pueden agregar manualmente las características al cuadrado:

df['Feature_squared'] = df['Feature'] ** 2

Pero para grados más altos, la clase PolynomialFeatures de sklearn.preprocessing es mucho más sencilla y eficiente. Requiere una estructura 2-D (DataFrame o arreglo 2-D):

from sklearn.preprocessing import PolynomialFeatures

X = df[['Feature']]
# Create the transformer
poly = PolynomialFeatures(degree=2, include_bias=False)
# Transform the data
X_poly = poly.fit_transform(X)

Parámetros

La clase PolynomialFeatures tiene varios parámetros importantes:

  • degree (predeterminado=2): el grado de las características polinómicas. Por ejemplo, si degree=3, genera .
  • interaction_only (predeterminado=False): si es True, solo se producen características de interacción (por ejemplo, ), evitando términos como .
  • include_bias (predeterminado=True): si es True, agrega una columna de unos (columna de sesgo).

Importante: dado que LinearRegression calcula el intercepto automáticamente, normalmente configuramos include_bias=False para evitar redundancia.

Construcción de la regresión polinómica

Una vez que tenemos las características transformadas (X_poly), podemos usar el modelo estándar LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

# Initialize and train the model
model = LinearRegression()
model.fit(X_poly, y)

Para predecir, es necesario transformar los nuevos datos usando la misma instancia del transformador antes de pasarlos al modelo:

# Transform new data
X_new_poly = poly.transform(X_new)
# Predict
y_pred = model.predict(X_new_poly)

Ejemplo completo

123456789101112131415161718192021222324252627282930
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures # Load data df = pd.read_csv(file_link) X = df[['Feature']] y = df['Target'] # 1. Create Polynomial Features n = 2 poly = PolynomialFeatures(degree=n, include_bias=False) X_poly = poly.fit_transform(X) # 2. Train Linear Regression model = LinearRegression() model.fit(X_poly, y) # 3. Predict on new data X_new = np.linspace(-0.1, 1.5, 80).reshape(-1, 1) X_new_poly = poly.transform(X_new) y_pred = model.predict(X_new_poly) # Visualization plt.scatter(X, y, label='Data') plt.plot(X_new, y_pred, color='red', label=f'Degree {n}') plt.legend() plt.show()
copy

Intente cambiar el valor de degree (n) para observar cómo varía la curva. Se notará que los grados más altos ajustan mejor los datos de entrenamiento, pero pueden comportarse de manera errática fuera del rango; esto conduce al siguiente capítulo sobre sobreajuste.

question mark

Considere el siguiente código. ¿En qué caso el código se ejecutará sin errores?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 12

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

bookConstrucción de Regresión Polinómica

Desliza para mostrar el menú

Carga de archivo

Cargamos poly.csv e inspeccionamos el contenido:

1234
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
copy

Luego, visualizar la relación:

12345
import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
copy

Una línea recta se ajusta de manera deficiente, por lo que la regresión polinómica es más adecuada.

Aquí se presenta la sección reescrita adaptada para Scikit-learn.

Construcción de la matriz transformada

Para crear características polinómicas, se pueden agregar manualmente las características al cuadrado:

df['Feature_squared'] = df['Feature'] ** 2

Pero para grados más altos, la clase PolynomialFeatures de sklearn.preprocessing es mucho más sencilla y eficiente. Requiere una estructura 2-D (DataFrame o arreglo 2-D):

from sklearn.preprocessing import PolynomialFeatures

X = df[['Feature']]
# Create the transformer
poly = PolynomialFeatures(degree=2, include_bias=False)
# Transform the data
X_poly = poly.fit_transform(X)

Parámetros

La clase PolynomialFeatures tiene varios parámetros importantes:

  • degree (predeterminado=2): el grado de las características polinómicas. Por ejemplo, si degree=3, genera .
  • interaction_only (predeterminado=False): si es True, solo se producen características de interacción (por ejemplo, ), evitando términos como .
  • include_bias (predeterminado=True): si es True, agrega una columna de unos (columna de sesgo).

Importante: dado que LinearRegression calcula el intercepto automáticamente, normalmente configuramos include_bias=False para evitar redundancia.

Construcción de la regresión polinómica

Una vez que tenemos las características transformadas (X_poly), podemos usar el modelo estándar LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

# Initialize and train the model
model = LinearRegression()
model.fit(X_poly, y)

Para predecir, es necesario transformar los nuevos datos usando la misma instancia del transformador antes de pasarlos al modelo:

# Transform new data
X_new_poly = poly.transform(X_new)
# Predict
y_pred = model.predict(X_new_poly)

Ejemplo completo

123456789101112131415161718192021222324252627282930
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures # Load data df = pd.read_csv(file_link) X = df[['Feature']] y = df['Target'] # 1. Create Polynomial Features n = 2 poly = PolynomialFeatures(degree=n, include_bias=False) X_poly = poly.fit_transform(X) # 2. Train Linear Regression model = LinearRegression() model.fit(X_poly, y) # 3. Predict on new data X_new = np.linspace(-0.1, 1.5, 80).reshape(-1, 1) X_new_poly = poly.transform(X_new) y_pred = model.predict(X_new_poly) # Visualization plt.scatter(X, y, label='Data') plt.plot(X_new, y_pred, color='red', label=f'Degree {n}') plt.legend() plt.show()
copy

Intente cambiar el valor de degree (n) para observar cómo varía la curva. Se notará que los grados más altos ajustan mejor los datos de entrenamiento, pero pueden comportarse de manera errática fuera del rango; esto conduce al siguiente capítulo sobre sobreajuste.

question mark

Considere el siguiente código. ¿En qué caso el código se ejecutará sin errores?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 12
some-alt