Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Polynomiale Regressie Bouwen | Sectie
Essentiële Supervised Learning

bookPolynomiale Regressie Bouwen

Bestand laden

We laden poly.csv en inspecteren het:

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

Vervolgens de relatie visualiseren:

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

Een rechte lijn past slecht, daarom is polynomiale regressie geschikter.

Hier volgt de herschreven sectie aangepast voor Scikit-learn.

Getransformeerde matrix opbouwen

Om polynomiale kenmerken te creëren, kunnen kwadratische kenmerken handmatig worden toegevoegd:

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

Maar voor hogere graden is de PolynomialFeatures-klasse uit sklearn.preprocessing veel eenvoudiger en efficiënter. Deze vereist een 2D-structuur (DataFrame of 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)

Parameters

De klasse PolynomialFeatures heeft verschillende belangrijke parameters:

  • degree (standaard=2): de graad van de polynomiale features. Bijvoorbeeld, als degree=3, worden er .
  • interaction_only (standaard=False): als True, worden alleen interactie-features gegenereerd (bijvoorbeeld ), waardoor termen zoals worden vermeden.
  • include_bias (standaard=True): als True, wordt er een kolom met enen toegevoegd (bias-kolom).

Belangrijk: omdat LinearRegression de intercept automatisch berekent, stellen we meestal include_bias=False in om overbodigheid te voorkomen.

Polynomiale regressie bouwen

Zodra we de getransformeerde features (X_poly) hebben, kunnen we het standaard LinearRegression-model gebruiken.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Voor voorspellen moet de nieuwe data met dezelfde transformer-instantie worden getransformeerd voordat deze aan het model wordt doorgegeven:

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

Volledig voorbeeld

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

Probeer de degree (n) aan te passen om te zien hoe de kromme verandert. U zult merken dat hogere graden de trainingsdata beter benaderen, maar zich grillig kunnen gedragen buiten het bereik—dit leidt naar het volgende hoofdstuk over Overfitting.

question mark

Beschouw de volgende code. In welk geval zal de code zonder fouten worden uitgevoerd?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 12

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

bookPolynomiale Regressie Bouwen

Veeg om het menu te tonen

Bestand laden

We laden poly.csv en inspecteren het:

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

Vervolgens de relatie visualiseren:

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

Een rechte lijn past slecht, daarom is polynomiale regressie geschikter.

Hier volgt de herschreven sectie aangepast voor Scikit-learn.

Getransformeerde matrix opbouwen

Om polynomiale kenmerken te creëren, kunnen kwadratische kenmerken handmatig worden toegevoegd:

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

Maar voor hogere graden is de PolynomialFeatures-klasse uit sklearn.preprocessing veel eenvoudiger en efficiënter. Deze vereist een 2D-structuur (DataFrame of 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)

Parameters

De klasse PolynomialFeatures heeft verschillende belangrijke parameters:

  • degree (standaard=2): de graad van de polynomiale features. Bijvoorbeeld, als degree=3, worden er .
  • interaction_only (standaard=False): als True, worden alleen interactie-features gegenereerd (bijvoorbeeld ), waardoor termen zoals worden vermeden.
  • include_bias (standaard=True): als True, wordt er een kolom met enen toegevoegd (bias-kolom).

Belangrijk: omdat LinearRegression de intercept automatisch berekent, stellen we meestal include_bias=False in om overbodigheid te voorkomen.

Polynomiale regressie bouwen

Zodra we de getransformeerde features (X_poly) hebben, kunnen we het standaard LinearRegression-model gebruiken.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Voor voorspellen moet de nieuwe data met dezelfde transformer-instantie worden getransformeerd voordat deze aan het model wordt doorgegeven:

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

Volledig voorbeeld

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

Probeer de degree (n) aan te passen om te zien hoe de kromme verandert. U zult merken dat hogere graden de trainingsdata beter benaderen, maar zich grillig kunnen gedragen buiten het bereik—dit leidt naar het volgende hoofdstuk over Overfitting.

question mark

Beschouw de volgende code. In welk geval zal de code zonder fouten worden uitgevoerd?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 12
some-alt