Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Bygga Polynomregression | Sektion
Grunder i Övervakad Inlärning

bookBygga Polynomregression

Laddar fil

Vi laddar poly.csv och inspekterar den:

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

Visualisera sedan relationen:

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

En rät linje passar dåligt, så polynomregression är mer lämplig.

Här är den omskrivna sektionen anpassad för Scikit-learn.

Bygga transformerad matris

För att skapa polynomfunktioner kan vi lägga till kvadrerade funktioner manuellt:

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

Men för högre grader är klassen PolynomialFeatures från sklearn.preprocessing mycket enklare och effektivare. Den kräver 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)

Parametrar

Klassen PolynomialFeatures har flera viktiga parametrar:

  • degree (standard=2): graden av de polynomiella funktionerna. Till exempel, om degree=3, genereras .
  • interaction_only (standard=False): om True, skapas endast interaktionsfunktioner (t.ex. ), vilket undviker termer som .
  • include_bias (standard=True): om True, läggs en kolumn med ettor till (bias-kolumn).

Viktigt: Eftersom LinearRegression automatiskt beräknar interceptet, brukar vi sätta include_bias=False för att undvika redundans.

Bygga polynomiell regression

När vi har de transformerade funktionerna (X_poly), kan vi använda den vanliga modellen LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

För att göra prediktioner måste ny data transformeras med samma transformer-instans innan den skickas till modellen:

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

Fullständigt exempel

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

Prova att ändra degree (n) för att se hur kurvan förändras. Du kommer att märka att högre gradtal anpassar sig bättre till träningsdatan men kan uppföra sig oberäkneligt utanför intervallet—detta leder vidare till nästa kapitel om överanpassning.

question mark

Tänk på följande kod. I vilket fall kommer koden att köras utan fel?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 12

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookBygga Polynomregression

Svep för att visa menyn

Laddar fil

Vi laddar poly.csv och inspekterar den:

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

Visualisera sedan relationen:

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

En rät linje passar dåligt, så polynomregression är mer lämplig.

Här är den omskrivna sektionen anpassad för Scikit-learn.

Bygga transformerad matris

För att skapa polynomfunktioner kan vi lägga till kvadrerade funktioner manuellt:

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

Men för högre grader är klassen PolynomialFeatures från sklearn.preprocessing mycket enklare och effektivare. Den kräver 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)

Parametrar

Klassen PolynomialFeatures har flera viktiga parametrar:

  • degree (standard=2): graden av de polynomiella funktionerna. Till exempel, om degree=3, genereras .
  • interaction_only (standard=False): om True, skapas endast interaktionsfunktioner (t.ex. ), vilket undviker termer som .
  • include_bias (standard=True): om True, läggs en kolumn med ettor till (bias-kolumn).

Viktigt: Eftersom LinearRegression automatiskt beräknar interceptet, brukar vi sätta include_bias=False för att undvika redundans.

Bygga polynomiell regression

När vi har de transformerade funktionerna (X_poly), kan vi använda den vanliga modellen LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

För att göra prediktioner måste ny data transformeras med samma transformer-instans innan den skickas till modellen:

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

Fullständigt exempel

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

Prova att ändra degree (n) för att se hur kurvan förändras. Du kommer att märka att högre gradtal anpassar sig bättre till träningsdatan men kan uppföra sig oberäkneligt utanför intervallet—detta leder vidare till nästa kapitel om överanpassning.

question mark

Tänk på följande kod. I vilket fall kommer koden att köras utan fel?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 12
some-alt