Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bygge Polynomisk Regresjon | Seksjon
Grunnleggende Overvåket Læring

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

Deretter visualiseres sammenhengen:

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

En rett linje passer dårlig, så polynomisk regresjon er mer egnet.

Her er den omskrevne delen tilpasset Scikit-learn.

Bygge transformert matrise

For å lage polynomiske trekk kan vi legge til kvadrerte trekk manuelt:

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

Men for høyere grader er PolynomialFeatures-klassen fra sklearn.preprocessing mye enklere og mer effektiv. Den krever en 2D-struktur (DataFrame eller 2D-array):

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)

Parametere

PolynomialFeatures-klassen har flere viktige parametere:

  • degree (standard=2): graden til de polynomielle trekkene. For eksempel, hvis degree=3, genereres .
  • interaction_only (standard=False): hvis True, produseres kun interaksjonstrekk (f.eks. ), og unngår ledd som .
  • include_bias (standard=True): hvis True, legges det til en kolonne med ener (bias-kolonne).

Viktig: siden LinearRegression automatisk beregner konstantleddet, setter vi vanligvis include_bias=False for å unngå redundans.

Bygging av polynomregresjon

Når vi har de transformerede trekkene (X_poly), kan vi bruke den vanlige LinearRegression-modellen.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

For å gjøre prediksjoner må nye data transformeres med samme transformer-instans før de sendes til modellen:

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

Fullstendig eksempel

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

Prøv å endre degree (n) for å se hvordan kurven endrer seg. Du vil merke at høyere grader tilpasser treningsdataene bedre, men kan oppføre seg uforutsigbart utenfor området—dette leder videre til neste kapittel om overtilpasning.

question mark

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

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 12

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

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

Deretter visualiseres sammenhengen:

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

En rett linje passer dårlig, så polynomisk regresjon er mer egnet.

Her er den omskrevne delen tilpasset Scikit-learn.

Bygge transformert matrise

For å lage polynomiske trekk kan vi legge til kvadrerte trekk manuelt:

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

Men for høyere grader er PolynomialFeatures-klassen fra sklearn.preprocessing mye enklere og mer effektiv. Den krever en 2D-struktur (DataFrame eller 2D-array):

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)

Parametere

PolynomialFeatures-klassen har flere viktige parametere:

  • degree (standard=2): graden til de polynomielle trekkene. For eksempel, hvis degree=3, genereres .
  • interaction_only (standard=False): hvis True, produseres kun interaksjonstrekk (f.eks. ), og unngår ledd som .
  • include_bias (standard=True): hvis True, legges det til en kolonne med ener (bias-kolonne).

Viktig: siden LinearRegression automatisk beregner konstantleddet, setter vi vanligvis include_bias=False for å unngå redundans.

Bygging av polynomregresjon

Når vi har de transformerede trekkene (X_poly), kan vi bruke den vanlige LinearRegression-modellen.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

For å gjøre prediksjoner må nye data transformeres med samme transformer-instans før de sendes til modellen:

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

Fullstendig eksempel

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

Prøv å endre degree (n) for å se hvordan kurven endrer seg. Du vil merke at høyere grader tilpasser treningsdataene bedre, men kan oppføre seg uforutsigbart utenfor området—dette leder videre til neste kapittel om overtilpasning.

question mark

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

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 12
some-alt