Polynomiale Regressie Opbouwen
Bestand laden
We laden poly.csv en inspecteren het:
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())
Vervolgens de relatie visualiseren:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Een rechte lijn past slecht, daarom is polynomiale regressie geschikter.
X̃-matrix opbouwen
Voor het creëren van X̃ kunnen kwadratische kenmerken handmatig worden toegevoegd:
df['Feature_squared'] = df['Feature'] ** 2
Voor hogere graden is PolynomialFeatures echter eenvoudiger. Dit vereist een 2D-structuur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Voegt ook de constante kolom toe, dus sm.add_constant() is niet nodig.
Indien X eendimensionaal is, omzetten:
X = X.reshape(-1, 1)
Opbouwen van de polynomiale regressie
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()
Voor voorspellen moet nieuwe data op dezelfde manier worden getransformeerd:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Volledig voorbeeld
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()
Probeer verschillende waarden voor n om te zien hoe de kromme verandert en hoe voorspellingen zich gedragen buiten het oorspronkelijke bereik van de feature—dit vormt de opmaat naar het volgende hoofdstuk.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 5.26
Polynomiale Regressie Opbouwen
Veeg om het menu te tonen
Bestand laden
We laden poly.csv en inspecteren het:
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())
Vervolgens de relatie visualiseren:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Een rechte lijn past slecht, daarom is polynomiale regressie geschikter.
X̃-matrix opbouwen
Voor het creëren van X̃ kunnen kwadratische kenmerken handmatig worden toegevoegd:
df['Feature_squared'] = df['Feature'] ** 2
Voor hogere graden is PolynomialFeatures echter eenvoudiger. Dit vereist een 2D-structuur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Voegt ook de constante kolom toe, dus sm.add_constant() is niet nodig.
Indien X eendimensionaal is, omzetten:
X = X.reshape(-1, 1)
Opbouwen van de polynomiale regressie
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()
Voor voorspellen moet nieuwe data op dezelfde manier worden getransformeerd:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Volledig voorbeeld
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()
Probeer verschillende waarden voor n om te zien hoe de kromme verandert en hoe voorspellingen zich gedragen buiten het oorspronkelijke bereik van de feature—dit vormt de opmaat naar het volgende hoofdstuk.
Bedankt voor je feedback!