Lineaarinen Regressio
Käytämme todellista aineistoa lineaarisen regressiomallin toteuttamiseen PyTorchilla. Aineistossa on kaksi saraketta:
'Number of Appliances': kodin laitteiden lukumäärä (syöteominaisuus,X);'Electricity Bill': vastaava sähkölaskun summa (kohdearvo,Y).
1. Aineiston lataaminen ja tarkastelu
Aineisto on tallennettu CSV-tiedostoon. Lataamme sen pandas-kirjastolla ja tarkastelemme ensimmäisiä rivejä:
12345import pandas as pd # Load the dataset bills_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/electricity_bills.csv') # Display the first five rows print(bills_df.head())
2. Datan valmistelu PyTorchille
Seuraavaksi tulee erottaa syöte- (X) ja kohde- (Y) sarakkeet, muuntaa ne PyTorch-tensoreiksi sekä muotoilla ne 2D-tensoreiksi yhteensopivuuden varmistamiseksi PyTorchin operaatioiden kanssa:
12345678910import torch import pandas as pd # Load the dataset bills_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/electricity_bills.csv') # Extract input (Number of Appliances) and target (Electricity Bill) X = torch.tensor(bills_df['Number of Appliances'].values).float().reshape(-1, 1) Y = torch.tensor(bills_df['Electricity Bill'].values).float().reshape(-1, 1) # Print the shapes of X and Y print(f"Shape of X: {X.shape}") print(f"Shape of Y: {Y.shape}")
3. Lineaarisen mallin määrittely
PyTorchin nn.Linear-moduuli määrittelee täysin yhdistetyn kerroksen, joka suorittaa laskennan y = xW
Sen keskeiset parametrit ovat:
in_features: syöteominaisuuksien määrä (selittävät muuttujat);out_features: lähtöominaisuuksien määrä (ennustetut arvot).
Yksinkertaisessa lineaarisessa regressiossa, kuten tässä tapauksessa, ennustetaan yksi lähtöarvo yhdestä syötteestä. Tällöin:
in_features=1: yksi syötemuuttuja;out_features=1: yksi ennustettu arvo.
import torch.nn as nn
# Define the linear regression model
model = nn.Linear(in_features=1, out_features=1)
4. Häviöfunktion ja optimoijan määrittely
Käytämme keskineliövirhettä (MSE) häviöfunktiona ja stokastista gradienttilaskeutumista (SGD) optimoijana, jonka oppimisnopeus on 0.005.
MSE-häviö voidaan määritellä käyttämällä nn.MSELoss-luokkaa ja SGD vastaavaa luokkaa torch.optim-moduulista.
import torch.optim as optim
# Define the loss function (MSE)
loss_fn = nn.MSELoss()
# Define the optimizer (SGD)
optimizer = optim.SGD(model.parameters(), lr=0.005)
5. Mallin kouluttaminen
Koulutus sisältää eteenpäin suuntautuvan vaiheen ja taaksepäin suuntautuvan vaiheen suorittamisen määritellyn määrän epookkeja.
- Eteenpäin suuntautuva vaihe: tässä vaiheessa lasketaan mallin ennusteet syötteen perusteella ja lasketaan häviö vertaamalla ennusteita todellisiin arvoihin;
- Taaksepäin suuntautuva vaihe: tässä vaiheessa lasketaan gradientit takaisinkytkennän avulla (häviön perusteella) ja päivitetään mallin painot ja bias optimoijan avulla, joka tässä tapauksessa on SGD.
Tätä prosessia toistetaan määritellyn määrän epookkeja, jotta häviö minimoituu ja mallin suorituskyky paranee.
1234567891011121314151617181920212223242526272829303132333435import torch import torch.nn as nn import torch.optim as optim import pandas as pd # Load the dataset bills_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/electricity_bills.csv') # Extract input (Number of Appliances) and target (Electricity Bill) X = torch.tensor(bills_df['Number of Appliances'].values).float().reshape(-1, 1) Y = torch.tensor(bills_df['Electricity Bill'].values).float().reshape(-1, 1) # Define the linear regression model model = nn.Linear(in_features=1, out_features=1) # Define the loss function (MSE) loss_fn = nn.MSELoss() # Define the optimizer (SGD) optimizer = optim.SGD(model.parameters(), lr=0.005) # Training loop epochs = 100 for epoch in range(epochs): # Forward pass Y_pred = model(X) loss = loss_fn(Y_pred, Y) # Backward pass optimizer.zero_grad() # Reset gradients loss.backward() # Compute gradients # Update parameters optimizer.step() if (epoch + 1) % 10 == 0: print(f"Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}") # Final parameters print(f"Trained weight: {model.weight.item()}") print(f"Trained bias: {model.bias.item()}")
Mallin parametreihin, eli painoihin ja harhoihin, pääsee käsiksi käyttämällä .weight- ja .bias-attribuutteja:
weights = model.weight.item()
biases = model.bias.item()
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain how the training loop works in more detail?
What do the trained weight and bias values represent?
How can I use this trained model to make predictions on new data?
Awesome!
Completion rate improved to 5
Lineaarinen Regressio
Pyyhkäise näyttääksesi valikon
Käytämme todellista aineistoa lineaarisen regressiomallin toteuttamiseen PyTorchilla. Aineistossa on kaksi saraketta:
'Number of Appliances': kodin laitteiden lukumäärä (syöteominaisuus,X);'Electricity Bill': vastaava sähkölaskun summa (kohdearvo,Y).
1. Aineiston lataaminen ja tarkastelu
Aineisto on tallennettu CSV-tiedostoon. Lataamme sen pandas-kirjastolla ja tarkastelemme ensimmäisiä rivejä:
12345import pandas as pd # Load the dataset bills_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/electricity_bills.csv') # Display the first five rows print(bills_df.head())
2. Datan valmistelu PyTorchille
Seuraavaksi tulee erottaa syöte- (X) ja kohde- (Y) sarakkeet, muuntaa ne PyTorch-tensoreiksi sekä muotoilla ne 2D-tensoreiksi yhteensopivuuden varmistamiseksi PyTorchin operaatioiden kanssa:
12345678910import torch import pandas as pd # Load the dataset bills_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/electricity_bills.csv') # Extract input (Number of Appliances) and target (Electricity Bill) X = torch.tensor(bills_df['Number of Appliances'].values).float().reshape(-1, 1) Y = torch.tensor(bills_df['Electricity Bill'].values).float().reshape(-1, 1) # Print the shapes of X and Y print(f"Shape of X: {X.shape}") print(f"Shape of Y: {Y.shape}")
3. Lineaarisen mallin määrittely
PyTorchin nn.Linear-moduuli määrittelee täysin yhdistetyn kerroksen, joka suorittaa laskennan y = xW
Sen keskeiset parametrit ovat:
in_features: syöteominaisuuksien määrä (selittävät muuttujat);out_features: lähtöominaisuuksien määrä (ennustetut arvot).
Yksinkertaisessa lineaarisessa regressiossa, kuten tässä tapauksessa, ennustetaan yksi lähtöarvo yhdestä syötteestä. Tällöin:
in_features=1: yksi syötemuuttuja;out_features=1: yksi ennustettu arvo.
import torch.nn as nn
# Define the linear regression model
model = nn.Linear(in_features=1, out_features=1)
4. Häviöfunktion ja optimoijan määrittely
Käytämme keskineliövirhettä (MSE) häviöfunktiona ja stokastista gradienttilaskeutumista (SGD) optimoijana, jonka oppimisnopeus on 0.005.
MSE-häviö voidaan määritellä käyttämällä nn.MSELoss-luokkaa ja SGD vastaavaa luokkaa torch.optim-moduulista.
import torch.optim as optim
# Define the loss function (MSE)
loss_fn = nn.MSELoss()
# Define the optimizer (SGD)
optimizer = optim.SGD(model.parameters(), lr=0.005)
5. Mallin kouluttaminen
Koulutus sisältää eteenpäin suuntautuvan vaiheen ja taaksepäin suuntautuvan vaiheen suorittamisen määritellyn määrän epookkeja.
- Eteenpäin suuntautuva vaihe: tässä vaiheessa lasketaan mallin ennusteet syötteen perusteella ja lasketaan häviö vertaamalla ennusteita todellisiin arvoihin;
- Taaksepäin suuntautuva vaihe: tässä vaiheessa lasketaan gradientit takaisinkytkennän avulla (häviön perusteella) ja päivitetään mallin painot ja bias optimoijan avulla, joka tässä tapauksessa on SGD.
Tätä prosessia toistetaan määritellyn määrän epookkeja, jotta häviö minimoituu ja mallin suorituskyky paranee.
1234567891011121314151617181920212223242526272829303132333435import torch import torch.nn as nn import torch.optim as optim import pandas as pd # Load the dataset bills_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/electricity_bills.csv') # Extract input (Number of Appliances) and target (Electricity Bill) X = torch.tensor(bills_df['Number of Appliances'].values).float().reshape(-1, 1) Y = torch.tensor(bills_df['Electricity Bill'].values).float().reshape(-1, 1) # Define the linear regression model model = nn.Linear(in_features=1, out_features=1) # Define the loss function (MSE) loss_fn = nn.MSELoss() # Define the optimizer (SGD) optimizer = optim.SGD(model.parameters(), lr=0.005) # Training loop epochs = 100 for epoch in range(epochs): # Forward pass Y_pred = model(X) loss = loss_fn(Y_pred, Y) # Backward pass optimizer.zero_grad() # Reset gradients loss.backward() # Compute gradients # Update parameters optimizer.step() if (epoch + 1) % 10 == 0: print(f"Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}") # Final parameters print(f"Trained weight: {model.weight.item()}") print(f"Trained bias: {model.bias.item()}")
Mallin parametreihin, eli painoihin ja harhoihin, pääsee käsiksi käyttämällä .weight- ja .bias-attribuutteja:
weights = model.weight.item()
biases = model.bias.item()
Kiitos palautteestasi!