Bygga Polynomregression
Laddar fil
Vi laddar poly.csv och inspekterar 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())
Visualisera sedan relationen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, omdegree=3, genereras .interaction_only(standard=False): omTrue, skapas endast interaktionsfunktioner (t.ex. ), vilket undviker termer som .include_bias(standard=True): omTrue, 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
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()
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.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Fantastiskt!
Completion betyg förbättrat till 3.33
Bygga Polynomregression
Svep för att visa menyn
Laddar fil
Vi laddar poly.csv och inspekterar 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())
Visualisera sedan relationen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, omdegree=3, genereras .interaction_only(standard=False): omTrue, skapas endast interaktionsfunktioner (t.ex. ), vilket undviker termer som .include_bias(standard=True): omTrue, 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
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()
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.
Tack för dina kommentarer!