Polynomisen Regressiomallin Rakentaminen
Tiedoston lataaminen
Ladataan poly.csv ja tarkastellaan sitä:
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())
Seuraavaksi havainnollistetaan riippuvuutta:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, josdegree=3, se tuottaa .interaction_only(oletus=False): josTrue, tuotetaan vain vuorovaikutusominaisuudet (esim. ), jolloin vältetään termit kuten .include_bias(oletus=True): josTrue, 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
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()
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 3.33
Polynomisen Regressiomallin Rakentaminen
Pyyhkäise näyttääksesi valikon
Tiedoston lataaminen
Ladataan poly.csv ja tarkastellaan sitä:
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())
Seuraavaksi havainnollistetaan riippuvuutta:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, josdegree=3, se tuottaa .interaction_only(oletus=False): josTrue, tuotetaan vain vuorovaikutusominaisuudet (esim. ), jolloin vältetään termit kuten .include_bias(oletus=True): josTrue, 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
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()
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.
Kiitos palautteestasi!