Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Construindo Regressão Polinomial | Seção
Fundamentos do Aprendizado Supervisionado

bookConstruindo Regressão Polinomial

Carregando Arquivo

Carregamos poly.csv e inspecionamos:

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

Em seguida, visualize a relação:

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

Uma linha reta apresenta ajuste inadequado, tornando a Regressão Polinomial mais apropriada.

Aqui está a seção reescrita adaptada para Scikit-learn.

Construção da Matriz Transformada

Para criar características polinomiais, é possível adicionar manualmente as características ao quadrado:

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

Porém, para graus mais altos, a classe PolynomialFeatures do sklearn.preprocessing é muito mais simples e eficiente. Ela exige uma estrutura 2-D (DataFrame ou array 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

A classe PolynomialFeatures possui vários parâmetros importantes:

  • degree (padrão=2): o grau das features polinomiais. Por exemplo, se degree=3, ela gera .
  • interaction_only (padrão=False): se True, apenas features de interação são produzidas (por exemplo, ), evitando termos como .
  • include_bias (padrão=True): se True, adiciona uma coluna de uns (coluna de viés).

Importante: como o LinearRegression calcula o intercepto automaticamente, geralmente definimos include_bias=False para evitar redundância.

Construção da Regressão Polinomial

Após obtermos as features transformadas (X_poly), podemos utilizar o modelo padrão LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

A previsão requer transformar os novos dados usando a mesma instância do transformador antes de passá-los ao modelo:

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

Exemplo 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

Experimente alterar o valor de degree (n) para observar como a curva se modifica. Note que graus mais altos ajustam melhor os dados de treinamento, mas podem apresentar comportamento instável fora do intervalo — isso será abordado no próximo capítulo sobre Overfitting.

question mark

Considere o código a seguir. Em qual caso o código será executado sem erros?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 12

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

bookConstruindo Regressão Polinomial

Deslize para mostrar o menu

Carregando Arquivo

Carregamos poly.csv e inspecionamos:

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

Em seguida, visualize a relação:

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

Uma linha reta apresenta ajuste inadequado, tornando a Regressão Polinomial mais apropriada.

Aqui está a seção reescrita adaptada para Scikit-learn.

Construção da Matriz Transformada

Para criar características polinomiais, é possível adicionar manualmente as características ao quadrado:

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

Porém, para graus mais altos, a classe PolynomialFeatures do sklearn.preprocessing é muito mais simples e eficiente. Ela exige uma estrutura 2-D (DataFrame ou array 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

A classe PolynomialFeatures possui vários parâmetros importantes:

  • degree (padrão=2): o grau das features polinomiais. Por exemplo, se degree=3, ela gera .
  • interaction_only (padrão=False): se True, apenas features de interação são produzidas (por exemplo, ), evitando termos como .
  • include_bias (padrão=True): se True, adiciona uma coluna de uns (coluna de viés).

Importante: como o LinearRegression calcula o intercepto automaticamente, geralmente definimos include_bias=False para evitar redundância.

Construção da Regressão Polinomial

Após obtermos as features transformadas (X_poly), podemos utilizar o modelo padrão LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

A previsão requer transformar os novos dados usando a mesma instância do transformador antes de passá-los ao modelo:

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

Exemplo 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

Experimente alterar o valor de degree (n) para observar como a curva se modifica. Note que graus mais altos ajustam melhor os dados de treinamento, mas podem apresentar comportamento instável fora do intervalo — isso será abordado no próximo capítulo sobre Overfitting.

question mark

Considere o código a seguir. Em qual caso o código será executado sem erros?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 12
some-alt