Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Polynomisen Regressiomallin Rakentaminen | Osio
Ohjatun Oppimisen Perusteet

bookPolynomisen Regressiomallin Rakentaminen

Tiedoston lataaminen

Ladataan poly.csv ja tarkastellaan sitä:

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

Seuraavaksi havainnollistetaan riippuvuutta:

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

Suora viiva ei sovi hyvin, joten polynomiregressio on sopivampi.

Tässä on uudelleenkirjoitettu osio sovitettuna Scikit-learn-kirjastolle.

Muunnetun matriisin rakentaminen

Polynomisten piirteiden luomiseksi voimme lisätä neliöidyt piirteet manuaalisesti:

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

Korkeamman asteen tapauksissa PolynomialFeatures-luokka sklearn.preprocessing-moduulista on huomattavasti helpompi ja tehokkaampi. Se vaatii kaksiulotteisen rakenteen (DataFrame tai 2D-taulukko):

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)

Parametrit

PolynomialFeatures-luokalla on useita tärkeitä parametreja:

  • degree (oletus=2): polynomisten ominaisuuksien aste. Esimerkiksi, jos degree=3, se tuottaa .
  • interaction_only (oletus=False): jos True, tuotetaan vain vuorovaikutusominaisuudet (esim. ), jolloin vältetään termit kuten .
  • include_bias (oletus=True): jos True, lisätään sarake, jossa on ykkösiä (bias-sarake).

Tärkeää: koska LinearRegression laskee vakiotermin automaattisesti, asetetaan yleensä include_bias=False redundanssin välttämiseksi.

Polynomiregression rakentaminen

Kun ominaisuudet on muunnettu (X_poly), voidaan käyttää tavallista LinearRegression-mallia.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Ennustaminen vaatii uuden datan muuntamisen samalla muunnos-instanssilla ennen mallille syöttämistä:

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

Koko esimerkki

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

Kokeile muuttaa degree-arvoa (n) ja tarkkaile, miten käyrä muuttuu. Huomaat, että suuremmat asteet sovittavat harjoitusaineiston paremmin, mutta voivat käyttäytyä arvaamattomasti alueen ulkopuolella—tämä johdattaa seuraavaan lukuun ylisopeutumisesta.

question mark

Tarkastele seuraavaa koodia. Missä tapauksessa koodi suoritetaan ilman virheitä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 12

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookPolynomisen Regressiomallin Rakentaminen

Pyyhkäise näyttääksesi valikon

Tiedoston lataaminen

Ladataan poly.csv ja tarkastellaan sitä:

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

Seuraavaksi havainnollistetaan riippuvuutta:

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

Suora viiva ei sovi hyvin, joten polynomiregressio on sopivampi.

Tässä on uudelleenkirjoitettu osio sovitettuna Scikit-learn-kirjastolle.

Muunnetun matriisin rakentaminen

Polynomisten piirteiden luomiseksi voimme lisätä neliöidyt piirteet manuaalisesti:

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

Korkeamman asteen tapauksissa PolynomialFeatures-luokka sklearn.preprocessing-moduulista on huomattavasti helpompi ja tehokkaampi. Se vaatii kaksiulotteisen rakenteen (DataFrame tai 2D-taulukko):

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)

Parametrit

PolynomialFeatures-luokalla on useita tärkeitä parametreja:

  • degree (oletus=2): polynomisten ominaisuuksien aste. Esimerkiksi, jos degree=3, se tuottaa .
  • interaction_only (oletus=False): jos True, tuotetaan vain vuorovaikutusominaisuudet (esim. ), jolloin vältetään termit kuten .
  • include_bias (oletus=True): jos True, lisätään sarake, jossa on ykkösiä (bias-sarake).

Tärkeää: koska LinearRegression laskee vakiotermin automaattisesti, asetetaan yleensä include_bias=False redundanssin välttämiseksi.

Polynomiregression rakentaminen

Kun ominaisuudet on muunnettu (X_poly), voidaan käyttää tavallista LinearRegression-mallia.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Ennustaminen vaatii uuden datan muuntamisen samalla muunnos-instanssilla ennen mallille syöttämistä:

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

Koko esimerkki

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

Kokeile muuttaa degree-arvoa (n) ja tarkkaile, miten käyrä muuttuu. Huomaat, että suuremmat asteet sovittavat harjoitusaineiston paremmin, mutta voivat käyttäytyä arvaamattomasti alueen ulkopuolella—tämä johdattaa seuraavaan lukuun ylisopeutumisesta.

question mark

Tarkastele seuraavaa koodia. Missä tapauksessa koodi suoritetaan ilman virheitä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 12
some-alt