Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Interpolointi vs Ekstrapolointi | Polynomiregressio
Lineaarinen Regressio Pythonilla
course content

Kurssisisältö

Lineaarinen Regressio Pythonilla

Lineaarinen Regressio Pythonilla

1. Yksinkertainen Lineaarinen Regressio
2. Monimuuttujainen Lineaarinen Regressio
3. Polynomiregressio
4. Parhaan Mallin Valitseminen

book
Interpolointi vs Ekstrapolointi

Edellisessä luvussa huomasimme, että eri mallien ennusteet poikkeavat toisistaan enemmän reuna-alueilla.

Tarkemmin sanottuna ennusteet muuttuvat oudoiksi siinä vaiheessa, kun siirrytään koulutusdatan arvoalueen ulkopuolelle. Arvojen ennustamista koulutusdatan alueen ulkopuolelle kutsutaan ekstrapoloinniksi, ja arvojen ennustamista alueen sisällä kutsutaan interpoloinniksi.

Regressio ei käsittele ekstrapolointia hyvin. Sitä käytetään interpolointiin, ja se voi tuottaa absurdeja ennusteita, kun uudet havainnot ovat koulutusdatan alueen ulkopuolella.

Luottamusvälit

OLS-luokan avulla voit myös saada regressiosuoran luottamusvälit missä tahansa pisteessä. Mutta syntaksi on hieman monimutkainen:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Missä alpha on luottamustaso, joka yleensä asetetaan arvoon 0.05.
Yllä olevalla koodilla saat regressiosuoran luottamusvälin ala- ja ylärajat pisteessä X_new_tilde (tai taulukon ylä- ja alarajoja, jos X_new_tilde on taulukko).

Tämän avulla voimme nyt piirtää regressiosuoran yhdessä sen luottamusvälin kanssa:

12345678910111213141516171819202122
import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class 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) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
copy

Ilman tietoa kohteen jakaumasta emme voi löytää tarkkaa regressiosuoraa. Kaikki, mitä teemme, on yrittää arvioida sitä datamme perusteella. Regressiosuoran luottamusväli on väli, jossa tarkka regressiosuora sijaitsee luottamustasolla alpha.
Voit huomata, että väli kasvaa suuremmaksi, mitä kauemmas mennään harjoitusaineiston alueesta.

Note
Huomio

Luottamusvälit rakennetaan olettaen, että malli on valittu oikein (esim. yksinkertainen lineaarinen regressio tai neljännen asteen polynomiregressio).

Jos malli on valittu huonosti, luottamusväli ei ole luotettava, eikä myöskään itse suora. Opit seuraavassa osiossa, kuinka valita paras malli.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

course content

Kurssisisältö

Lineaarinen Regressio Pythonilla

Lineaarinen Regressio Pythonilla

1. Yksinkertainen Lineaarinen Regressio
2. Monimuuttujainen Lineaarinen Regressio
3. Polynomiregressio
4. Parhaan Mallin Valitseminen

book
Interpolointi vs Ekstrapolointi

Edellisessä luvussa huomasimme, että eri mallien ennusteet poikkeavat toisistaan enemmän reuna-alueilla.

Tarkemmin sanottuna ennusteet muuttuvat oudoiksi siinä vaiheessa, kun siirrytään koulutusdatan arvoalueen ulkopuolelle. Arvojen ennustamista koulutusdatan alueen ulkopuolelle kutsutaan ekstrapoloinniksi, ja arvojen ennustamista alueen sisällä kutsutaan interpoloinniksi.

Regressio ei käsittele ekstrapolointia hyvin. Sitä käytetään interpolointiin, ja se voi tuottaa absurdeja ennusteita, kun uudet havainnot ovat koulutusdatan alueen ulkopuolella.

Luottamusvälit

OLS-luokan avulla voit myös saada regressiosuoran luottamusvälit missä tahansa pisteessä. Mutta syntaksi on hieman monimutkainen:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Missä alpha on luottamustaso, joka yleensä asetetaan arvoon 0.05.
Yllä olevalla koodilla saat regressiosuoran luottamusvälin ala- ja ylärajat pisteessä X_new_tilde (tai taulukon ylä- ja alarajoja, jos X_new_tilde on taulukko).

Tämän avulla voimme nyt piirtää regressiosuoran yhdessä sen luottamusvälin kanssa:

12345678910111213141516171819202122
import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class 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) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
copy

Ilman tietoa kohteen jakaumasta emme voi löytää tarkkaa regressiosuoraa. Kaikki, mitä teemme, on yrittää arvioida sitä datamme perusteella. Regressiosuoran luottamusväli on väli, jossa tarkka regressiosuora sijaitsee luottamustasolla alpha.
Voit huomata, että väli kasvaa suuremmaksi, mitä kauemmas mennään harjoitusaineiston alueesta.

Note
Huomio

Luottamusvälit rakennetaan olettaen, että malli on valittu oikein (esim. yksinkertainen lineaarinen regressio tai neljännen asteen polynomiregressio).

Jos malli on valittu huonosti, luottamusväli ei ole luotettava, eikä myöskään itse suora. Opit seuraavassa osiossa, kuinka valita paras malli.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt