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

bookLineaarisen Regressiomallin Rakentaminen

Tiedät jo, mitä yksinkertainen lineaarinen regressio on ja kuinka löytää parhaiten dataan sopiva suora. Käyt nyt läpi kaikki vaiheet lineaarisen regression rakentamiseksi oikealle aineistolle.

Datan lataaminen

Meillä on tiedosto, simple_height_data.csv, jossa on esimerkeissämme käytetty data. Ladataan tiedosto ja tarkastellaan sitä:

123456
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file print(df.head()) # Print the first 5 instances from a dataset
copy

Aineistossa on kaksi saraketta: ensimmäinen on 'Father', joka on syöteominaisuus, ja toinen on 'Height', joka on kohdemuuttuja.

Kohdearvot asetetaan muuttujaan y ja ominaisuusarvot muuttujaan X, ja rakennetaan hajontakuvio.

123456
import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
copy

Parametrien etsiminen

Lineaarisen regressiomallin toteuttamiseen Scikit-learnissa käytetään LinearRegression-luokkaa.

LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)

Parametrit

LinearRegression-luokalla on useita parametreja, jotka ohjaavat mallin sovittamista.

  • fit_intercept (oletus=True): Määrittää, lasketaanko mallille vakiotermi (bias). Jos asetettu arvoksi False, vakiotermiä ei käytetä laskennassa (eli datan oletetaan olevan keskitetty).
  • copy_X (oletus=True): Jos True, X kopioidaan; muuten se voidaan ylikirjoittaa.
  • n_jobs (oletus=None): Kuinka monta prosessia käytetään laskentaan. Tämä nopeuttaa vain, jos n_targets > 1 ja ongelma on riittävän suuri. None tarkoittaa yhtä prosessia, ellei olla joblib.parallel_backend-kontekstissa. -1 tarkoittaa kaikkien prosessorien käyttöä.
  • positive (oletus=False): Kun asetettu arvoksi True, pakottaa kertoimet positiivisiksi. Tämä vaihtoehto on tuettu vain tiheille taulukoille.

Yleiset metodit

  • fit(X, y): Sovittaa lineaarisen mallin.
  • predict(X): Ennustaa lineaarisella mallilla.
  • score(X, y): Palauttaa mallin selitysasteen.

Attribuutit

  • coef_: Arvioidut kertoimet lineaarisen regression ongelmaan.
  • intercept_: Mallin vakiotermi.

Scikit-learnissa käytetään LinearRegression-luokkaa moduulista linear_model. Toisin kuin NumPyssa, astetta ei määritellä tässä; tämä luokka on tarkoitettu nimenomaan lineaarisille malleille. Parametrien laskemiseen käytetään .fit()-metodia.

Tässä esimerkki:

1234567891011121314
from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
copy
Note
Huomio

Jos model.intercept_- ja model.coef_-syntaksi ei ole tuttu, kyseessä on Scikit-learnin käytäntö. Ominaisuudet, jotka lasketaan (opitaan) koulutusprosessin aikana, päättyvät aina alaviivaan _ (esim. intercept_, coef_). intercept_ on yksittäinen arvo, kun taas coef_ on taulukko, joka sisältää kertoimet jokaiselle piirteelle (yksinkertaisessa lineaarisessa regressiossa siinä on vain yksi arvo).

Ennusteiden tekeminen

Nyt voimme piirtää suoran ja ennustaa uusia muuttujia koulutetun mallin avulla.

123
plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
copy

Nyt kun meillä on koulutettu malli, voimme käyttää .predict()-metodia uusien arvojen ennustamiseen.

123
X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(X_new) # Predict the target print('Predicted y: ', y_pred)
copy

Lineaarisen regressiomallin parametrien saaminen on melko helppoa. Jotkin kirjastot voivat kuitenkin tarjota myös lisätietoja.

question mark

Mitä luokkaa käytetään lineaarisen regression toteuttamiseen Scikit-learn-kirjastossa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

bookLineaarisen Regressiomallin Rakentaminen

Pyyhkäise näyttääksesi valikon

Tiedät jo, mitä yksinkertainen lineaarinen regressio on ja kuinka löytää parhaiten dataan sopiva suora. Käyt nyt läpi kaikki vaiheet lineaarisen regression rakentamiseksi oikealle aineistolle.

Datan lataaminen

Meillä on tiedosto, simple_height_data.csv, jossa on esimerkeissämme käytetty data. Ladataan tiedosto ja tarkastellaan sitä:

123456
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file print(df.head()) # Print the first 5 instances from a dataset
copy

Aineistossa on kaksi saraketta: ensimmäinen on 'Father', joka on syöteominaisuus, ja toinen on 'Height', joka on kohdemuuttuja.

Kohdearvot asetetaan muuttujaan y ja ominaisuusarvot muuttujaan X, ja rakennetaan hajontakuvio.

123456
import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
copy

Parametrien etsiminen

Lineaarisen regressiomallin toteuttamiseen Scikit-learnissa käytetään LinearRegression-luokkaa.

LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)

Parametrit

LinearRegression-luokalla on useita parametreja, jotka ohjaavat mallin sovittamista.

  • fit_intercept (oletus=True): Määrittää, lasketaanko mallille vakiotermi (bias). Jos asetettu arvoksi False, vakiotermiä ei käytetä laskennassa (eli datan oletetaan olevan keskitetty).
  • copy_X (oletus=True): Jos True, X kopioidaan; muuten se voidaan ylikirjoittaa.
  • n_jobs (oletus=None): Kuinka monta prosessia käytetään laskentaan. Tämä nopeuttaa vain, jos n_targets > 1 ja ongelma on riittävän suuri. None tarkoittaa yhtä prosessia, ellei olla joblib.parallel_backend-kontekstissa. -1 tarkoittaa kaikkien prosessorien käyttöä.
  • positive (oletus=False): Kun asetettu arvoksi True, pakottaa kertoimet positiivisiksi. Tämä vaihtoehto on tuettu vain tiheille taulukoille.

Yleiset metodit

  • fit(X, y): Sovittaa lineaarisen mallin.
  • predict(X): Ennustaa lineaarisella mallilla.
  • score(X, y): Palauttaa mallin selitysasteen.

Attribuutit

  • coef_: Arvioidut kertoimet lineaarisen regression ongelmaan.
  • intercept_: Mallin vakiotermi.

Scikit-learnissa käytetään LinearRegression-luokkaa moduulista linear_model. Toisin kuin NumPyssa, astetta ei määritellä tässä; tämä luokka on tarkoitettu nimenomaan lineaarisille malleille. Parametrien laskemiseen käytetään .fit()-metodia.

Tässä esimerkki:

1234567891011121314
from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
copy
Note
Huomio

Jos model.intercept_- ja model.coef_-syntaksi ei ole tuttu, kyseessä on Scikit-learnin käytäntö. Ominaisuudet, jotka lasketaan (opitaan) koulutusprosessin aikana, päättyvät aina alaviivaan _ (esim. intercept_, coef_). intercept_ on yksittäinen arvo, kun taas coef_ on taulukko, joka sisältää kertoimet jokaiselle piirteelle (yksinkertaisessa lineaarisessa regressiossa siinä on vain yksi arvo).

Ennusteiden tekeminen

Nyt voimme piirtää suoran ja ennustaa uusia muuttujia koulutetun mallin avulla.

123
plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
copy

Nyt kun meillä on koulutettu malli, voimme käyttää .predict()-metodia uusien arvojen ennustamiseen.

123
X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(X_new) # Predict the target print('Predicted y: ', y_pred)
copy

Lineaarisen regressiomallin parametrien saaminen on melko helppoa. Jotkin kirjastot voivat kuitenkin tarjota myös lisätietoja.

question mark

Mitä luokkaa käytetään lineaarisen regression toteuttamiseen Scikit-learn-kirjastossa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 3
some-alt