Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Opbygning af Polynomiel Regression | Sektion
Practice
Projects
Quizzes & Challenges
Quizzer
Challenges
/
Supervised Learning Essentials

bookOpbygning af Polynomiel Regression

Indlæsning af fil

Vi indlæser poly.csv og inspicerer 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

Visualiser derefter relationen:

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

En ret linje passer dårligt, så polynomiel regression er mere velegnet.

Her er det omskrevne afsnit tilpasset Scikit-learn.

Opbygning af transformeret matrix

For at oprette polynomielle features kan vi tilføje kvadrerede features manuelt:

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

Men for højere grader er PolynomialFeatures-klassen fra sklearn.preprocessing langt nemmere og mere effektiv. Den kræver en 2-D struktur (DataFrame eller 2-D 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)

Parametre

PolynomialFeatures-klassen har flere vigtige parametre:

  • degree (standard=2): graden af de polynomielle features. For eksempel, hvis degree=3, genereres .
  • interaction_only (standard=False): hvis True, produceres kun interaktions-features (f.eks. ), hvilket undgår termer som .
  • include_bias (standard=True): hvis True, tilføjes en kolonne med ettaller (bias-kolonne).

Vigtigt: Da LinearRegression automatisk beregner intercept, sætter vi normalt include_bias=False for at undgå redundans.

Opbygning af polynomiel regression

Når vi har de transformerede features (X_poly), kan vi bruge den standard LinearRegression-model.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Forudsigelse kræver, at nye data transformeres med den samme transformer-instans, før de gives til modellen:

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

Fuldt 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 at ændre degree (n) for at se, hvordan kurven ændrer sig. Du vil bemærke, at højere grader tilpasser træningsdataene bedre, men kan opføre sig uforudsigeligt uden for intervallet—dette leder videre til næste kapitel om overfitting.

question mark

Overvej følgende kode. I hvilket tilfælde vil koden køre uden fejl?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 12

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

bookOpbygning af Polynomiel Regression

Stryg for at vise menuen

Indlæsning af fil

Vi indlæser poly.csv og inspicerer 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

Visualiser derefter relationen:

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

En ret linje passer dårligt, så polynomiel regression er mere velegnet.

Her er det omskrevne afsnit tilpasset Scikit-learn.

Opbygning af transformeret matrix

For at oprette polynomielle features kan vi tilføje kvadrerede features manuelt:

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

Men for højere grader er PolynomialFeatures-klassen fra sklearn.preprocessing langt nemmere og mere effektiv. Den kræver en 2-D struktur (DataFrame eller 2-D 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)

Parametre

PolynomialFeatures-klassen har flere vigtige parametre:

  • degree (standard=2): graden af de polynomielle features. For eksempel, hvis degree=3, genereres .
  • interaction_only (standard=False): hvis True, produceres kun interaktions-features (f.eks. ), hvilket undgår termer som .
  • include_bias (standard=True): hvis True, tilføjes en kolonne med ettaller (bias-kolonne).

Vigtigt: Da LinearRegression automatisk beregner intercept, sætter vi normalt include_bias=False for at undgå redundans.

Opbygning af polynomiel regression

Når vi har de transformerede features (X_poly), kan vi bruge den standard LinearRegression-model.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Forudsigelse kræver, at nye data transformeres med den samme transformer-instans, før de gives til modellen:

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

Fuldt 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 at ændre degree (n) for at se, hvordan kurven ændrer sig. Du vil bemærke, at højere grader tilpasser træningsdataene bedre, men kan opføre sig uforudsigeligt uden for intervallet—dette leder videre til næste kapitel om overfitting.

question mark

Overvej følgende kode. I hvilket tilfælde vil koden køre uden fejl?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 12
some-alt