Construindo Regressão Polinomial
Carregando o 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, visualizar a relação:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Uma linha reta se ajusta mal, portanto a Regressão Polinomial é mais adequada.
Construção da Matriz X̃
Para criar X̃, é possível adicionar manualmente os recursos ao quadrado:
df['Feature_squared'] = df['Feature'] ** 2
Mas para graus mais altos, PolynomialFeatures é mais prático. Ele exige uma estrutura 2-D:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Também adiciona a coluna constante, portanto não é necessário usar sm.add_constant().
Se X for unidimensional, converta-o:
X = X.reshape(-1, 1)
Construção da Regressão Polinomial
import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()
A previsão exige transformar os novos dados da mesma forma:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Exemplo Completo
123456789101112131415161718import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
Experimente diferentes valores de n para observar como a curva se altera e como as previsões se comportam fora do intervalo original da variável explicativa — isso será abordado no próximo capítulo.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
What does the `PolynomialFeatures` class do in this context?
How do I choose the best degree `n` for my polynomial regression?
Can you explain why a straight line fits poorly in this example?
Awesome!
Completion rate improved to 5.26
Construindo Regressão Polinomial
Deslize para mostrar o menu
Carregando o 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, visualizar a relação:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Uma linha reta se ajusta mal, portanto a Regressão Polinomial é mais adequada.
Construção da Matriz X̃
Para criar X̃, é possível adicionar manualmente os recursos ao quadrado:
df['Feature_squared'] = df['Feature'] ** 2
Mas para graus mais altos, PolynomialFeatures é mais prático. Ele exige uma estrutura 2-D:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Também adiciona a coluna constante, portanto não é necessário usar sm.add_constant().
Se X for unidimensional, converta-o:
X = X.reshape(-1, 1)
Construção da Regressão Polinomial
import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()
A previsão exige transformar os novos dados da mesma forma:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Exemplo Completo
123456789101112131415161718import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
Experimente diferentes valores de n para observar como a curva se altera e como as previsões se comportam fora do intervalo original da variável explicativa — isso será abordado no próximo capítulo.
Obrigado pelo seu feedback!