Lineaarisen 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ä:
123456import 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
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.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
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 arvoksiFalse, vakiotermiä ei käytetä laskennassa (eli datan oletetaan olevan keskitetty).copy_X(oletus=True): JosTrue, 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.Nonetarkoittaa yhtä prosessia, ellei ollajoblib.parallel_backend-kontekstissa.-1tarkoittaa kaikkien prosessorien käyttöä.positive(oletus=False): Kun asetettu arvoksiTrue, 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:
1234567891011121314from 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)
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.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Nyt kun meillä on koulutettu malli, voimme käyttää .predict()-metodia uusien arvojen ennustamiseen.
123X_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)
Lineaarisen regressiomallin parametrien saaminen on melko helppoa. Jotkin kirjastot voivat kuitenkin tarjota myös lisätietoja.
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
Lineaarisen 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ä:
123456import 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
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.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
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 arvoksiFalse, vakiotermiä ei käytetä laskennassa (eli datan oletetaan olevan keskitetty).copy_X(oletus=True): JosTrue, 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.Nonetarkoittaa yhtä prosessia, ellei ollajoblib.parallel_backend-kontekstissa.-1tarkoittaa kaikkien prosessorien käyttöä.positive(oletus=False): Kun asetettu arvoksiTrue, 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:
1234567891011121314from 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)
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.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Nyt kun meillä on koulutettu malli, voimme käyttää .predict()-metodia uusien arvojen ennustamiseen.
123X_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)
Lineaarisen regressiomallin parametrien saaminen on melko helppoa. Jotkin kirjastot voivat kuitenkin tarjota myös lisätietoja.
Kiitos palautteestasi!