Bygge Polynomisk Regresjon
Laster inn fil
Vi laster inn poly.csv og inspiserer 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())
Deretter visualiseres sammenhengen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En rett linje passer dårlig, så polynomisk regresjon er mer egnet.
Her er den omskrevne delen tilpasset Scikit-learn.
Bygge transformert matrise
For å lage polynomiske trekk kan vi legge til kvadrerte trekk manuelt:
df['Feature_squared'] = df['Feature'] ** 2
Men for høyere grader er PolynomialFeatures-klassen fra sklearn.preprocessing mye enklere og mer effektiv. Den krever en 2D-struktur (DataFrame eller 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)
Parametere
PolynomialFeatures-klassen har flere viktige parametere:
degree(standard=2): graden til de polynomielle trekkene. For eksempel, hvisdegree=3, genereres .interaction_only(standard=False): hvisTrue, produseres kun interaksjonstrekk (f.eks. ), og unngår ledd som .include_bias(standard=True): hvisTrue, legges det til en kolonne med ener (bias-kolonne).
Viktig: siden LinearRegression automatisk beregner konstantleddet, setter vi vanligvis include_bias=False for å unngå redundans.
Bygging av polynomregresjon
Når vi har de transformerede trekkene (X_poly), kan vi bruke den vanlige LinearRegression-modellen.
from sklearn.linear_model import LinearRegression
y = df['Target']
# Initialize and train the model
model = LinearRegression()
model.fit(X_poly, y)
For å gjøre prediksjoner må nye data transformeres med samme transformer-instans før de sendes til modellen:
# Transform new data
X_new_poly = poly.transform(X_new)
# Predict
y_pred = model.predict(X_new_poly)
Fullstendig 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 å endre degree (n) for å se hvordan kurven endrer seg. Du vil merke at høyere grader tilpasser treningsdataene bedre, men kan oppføre seg uforutsigbart utenfor området—dette leder videre til neste kapittel om overtilpasning.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 3.33
Bygge Polynomisk Regresjon
Sveip for å vise menyen
Laster inn fil
Vi laster inn poly.csv og inspiserer 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())
Deretter visualiseres sammenhengen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En rett linje passer dårlig, så polynomisk regresjon er mer egnet.
Her er den omskrevne delen tilpasset Scikit-learn.
Bygge transformert matrise
For å lage polynomiske trekk kan vi legge til kvadrerte trekk manuelt:
df['Feature_squared'] = df['Feature'] ** 2
Men for høyere grader er PolynomialFeatures-klassen fra sklearn.preprocessing mye enklere og mer effektiv. Den krever en 2D-struktur (DataFrame eller 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)
Parametere
PolynomialFeatures-klassen har flere viktige parametere:
degree(standard=2): graden til de polynomielle trekkene. For eksempel, hvisdegree=3, genereres .interaction_only(standard=False): hvisTrue, produseres kun interaksjonstrekk (f.eks. ), og unngår ledd som .include_bias(standard=True): hvisTrue, legges det til en kolonne med ener (bias-kolonne).
Viktig: siden LinearRegression automatisk beregner konstantleddet, setter vi vanligvis include_bias=False for å unngå redundans.
Bygging av polynomregresjon
Når vi har de transformerede trekkene (X_poly), kan vi bruke den vanlige LinearRegression-modellen.
from sklearn.linear_model import LinearRegression
y = df['Target']
# Initialize and train the model
model = LinearRegression()
model.fit(X_poly, y)
For å gjøre prediksjoner må nye data transformeres med samme transformer-instans før de sendes til modellen:
# Transform new data
X_new_poly = poly.transform(X_new)
# Predict
y_pred = model.predict(X_new_poly)
Fullstendig 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 å endre degree (n) for å se hvordan kurven endrer seg. Du vil merke at høyere grader tilpasser treningsdataene bedre, men kan oppføre seg uforutsigbart utenfor området—dette leder videre til neste kapittel om overtilpasning.
Takk for tilbakemeldingene dine!