Construindo Regressão Polinomial
Carregando Arquivo
Carregamos poly.csv e inspecionamos:
1234import 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())
Em seguida, visualize a relação:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, sedegree=3, ela gera .interaction_only(padrão=False): seTrue, apenas features de interação são produzidas (por exemplo, ), evitando termos como .include_bias(padrão=True): seTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 3.33
Construindo Regressão Polinomial
Deslize para mostrar o menu
Carregando Arquivo
Carregamos poly.csv e inspecionamos:
1234import 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())
Em seguida, visualize a relação:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, sedegree=3, ela gera .interaction_only(padrão=False): seTrue, apenas features de interação são produzidas (por exemplo, ), evitando termos como .include_bias(padrão=True): seTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
Obrigado pelo seu feedback!