Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bygge Polynomisk Regresjon | Polynomisk Regresjon
Lineær Regresjon med Python

Bygge Polynomisk Regresjon

Sveip for å vise menyen

Laster inn fil

Vi laster inn poly.csv og inspiserer den:

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())

Deretter visualiseres sammenhengen:

12345
import 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̃-matrise

For å lage , kan kvadrerte funksjoner legges til manuelt:

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

Men for høyere grader er PolynomialFeatures enklere. Dette krever en 2D-struktur:

from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
PolynomialFeaturesClass

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

123456789101112131415161718
import 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 funksjonsområdet—dette leder videre til neste kapittel.

n456f4
question mark

Vurder følgende kode. I hvilket tilfelle vil koden kjøre uten feil?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Bygge Polynomisk Regresjon

Laster inn fil

Vi laster inn poly.csv og inspiserer den:

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())

Deretter visualiseres sammenhengen:

12345
import 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̃-matrise

For å lage , kan kvadrerte funksjoner legges til manuelt:

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

Men for høyere grader er PolynomialFeatures enklere. Dette krever en 2D-struktur:

from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
PolynomialFeaturesClass

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

123456789101112131415161718
import 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 funksjonsområdet—dette leder videre til neste kapittel.

n456f4
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3
some-alt