Opbygning af Polynomiel Regression
Indlæsning af fil
Vi indlæser poly.csv og inspicerer den:
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())
Visualiser derefter relationen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En ret linje passer dårligt, så polynomiel regression er mere velegnet.
Opbygning af X̃-matrix
For at oprette X̃ kan kvadrerede features tilføjes manuelt:
df['Feature_squared'] = df['Feature'] ** 2
Men for højere grader er PolynomialFeatures nemmere. Det kræver en 2-D struktur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Den tilføjer også konstantkolonnen, så sm.add_constant() er ikke nødvendig.
Hvis X er 1-D, omdan den:
X = X.reshape(-1, 1)
Opbygning af polynomiel regression
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()
Forudsigelse kræver, at nye data transformeres på samme måde:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Fuldt eksempel
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()
Prøv forskellige værdier af n for at se, hvordan kurven ændrer sig, og hvordan forudsigelserne opfører sig uden for det oprindelige feature-interval—dette leder videre til næste kapitel.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 5.26
Opbygning af Polynomiel Regression
Stryg for at vise menuen
Indlæsning af fil
Vi indlæser poly.csv og inspicerer den:
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())
Visualiser derefter relationen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En ret linje passer dårligt, så polynomiel regression er mere velegnet.
Opbygning af X̃-matrix
For at oprette X̃ kan kvadrerede features tilføjes manuelt:
df['Feature_squared'] = df['Feature'] ** 2
Men for højere grader er PolynomialFeatures nemmere. Det kræver en 2-D struktur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Den tilføjer også konstantkolonnen, så sm.add_constant() er ikke nødvendig.
Hvis X er 1-D, omdan den:
X = X.reshape(-1, 1)
Opbygning af polynomiel regression
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()
Forudsigelse kræver, at nye data transformeres på samme måde:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Fuldt eksempel
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()
Prøv forskellige værdier af n for at se, hvordan kurven ændrer sig, og hvordan forudsigelserne opfører sig uden for det oprindelige feature-interval—dette leder videre til næste kapitel.
Tak for dine kommentarer!