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.
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, hvisdegree=3, genereres .interaction_only(standard=False): hvisTrue, produceres kun interaktions-features (f.eks. ), hvilket undgår termer som .include_bias(standard=True): hvisTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
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
Fantastisk!
Completion rate forbedret til 3.33
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.
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, hvisdegree=3, genereres .interaction_only(standard=False): hvisTrue, produceres kun interaktions-features (f.eks. ), hvilket undgår termer som .include_bias(standard=True): hvisTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
Tak for dine kommentarer!