Bygge Polynomisk Regresjon
Laster inn fil
Vi laster inn poly.csv og inspiserer den:
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())
Deretter visualiseres sammenhengen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En rett linje passer dårlig, derfor er polynomisk regresjon mer egnet.
Bygging av X̃-matrisen
For å lage X̃, kan vi legge til kvadrerte trekk manuelt:
df['Feature_squared'] = df['Feature'] ** 2
Men for høyere grader er PolynomialFeatures enklere. Den krever en 2D-struktur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Den legger også til konstantkolonnen, så sm.add_constant() er ikke nødvendig.
Hvis X er 1-D, konverter den:
X = X.reshape(-1, 1)
Bygging av polynomregresjon
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()
Prediksjon krever at nye data transformeres på samme måte:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Fullstendig eksempel
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()
Prøv ulike verdier for n for å se hvordan kurven endrer seg og hvordan prediksjonene oppfører seg utenfor det opprinnelige området for funksjonen—dette leder videre til neste kapittel.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 5.26
Bygge Polynomisk Regresjon
Sveip for å vise menyen
Laster inn fil
Vi laster inn poly.csv og inspiserer den:
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())
Deretter visualiseres sammenhengen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En rett linje passer dårlig, derfor er polynomisk regresjon mer egnet.
Bygging av X̃-matrisen
For å lage X̃, kan vi legge til kvadrerte trekk manuelt:
df['Feature_squared'] = df['Feature'] ** 2
Men for høyere grader er PolynomialFeatures enklere. Den krever en 2D-struktur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Den legger også til konstantkolonnen, så sm.add_constant() er ikke nødvendig.
Hvis X er 1-D, konverter den:
X = X.reshape(-1, 1)
Bygging av polynomregresjon
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()
Prediksjon krever at nye data transformeres på samme måte:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Fullstendig eksempel
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()
Prøv ulike verdier for n for å se hvordan kurven endrer seg og hvordan prediksjonene oppfører seg utenfor det opprinnelige området for funksjonen—dette leder videre til neste kapittel.
Takk for tilbakemeldingene dine!