Lineare Regression
Wir verwenden einen realen Datensatz, um lineare Regression in PyTorch zu implementieren. Der Datensatz enthält zwei Spalten:
'Number of Appliances'
: die Anzahl der Geräte in einem Haushalt (Eingabemerkmal,X
);'Electricity Bill'
: der entsprechende Betrag der Stromrechnung (Zielausgabe,Y
).
1. Laden und Überprüfen des Datensatzes
Der Datensatz ist in einer CSV-Datei gespeichert. Wir laden ihn mit pandas
und überprüfen die ersten Zeilen:
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. Vorbereitung der Daten für PyTorch
Als Nächstes sollten die Eingabe- (X
) und Zielspalten (Y
) extrahiert, in PyTorch-Tensoren umgewandelt und in 2D-Tensoren umgeformt werden, um die Kompatibilität mit den Operationen von PyTorch sicherzustellen:
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. Definition des linearen Modells
Das nn.Linear
-Modul in PyTorch definiert eine vollständig verbundene Schicht, die y = xW
Die wichtigsten Parameter sind:
in_features
: Anzahl der Eingabemerkmale (unabhängige Variablen);out_features
: Anzahl der Ausgabemerkmale (vorhergesagte Werte).
Für eine einfache lineare Regression, wie in unserem Fall, wird ein einzelner Output auf Basis einer Eingabe vorhergesagt. Daher gilt:
in_features=1
: eine Eingabevariable;out_features=1
: ein vorhergesagter Wert.
import torch.nn as nn
# Define the linear regression model
model = nn.Linear(in_features=1, out_features=1)
4. Definition der Verlustfunktion und des Optimierers
Wir verwenden den mittleren quadratischen Fehler (MSE) als Verlustfunktion und stochastischen Gradientenabstieg (SGD) als Optimierer mit einer Lernrate von 0.005
.
Die MSE-Verlustfunktion kann mit der Klasse nn.MSELoss
definiert werden und SGD mit der entsprechenden Klasse aus dem Modul torch.optim
.
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. Training des Modells
Das Training umfasst das Durchführen eines Forward Pass und eines Backward Pass für eine festgelegte Anzahl von Epochen.
- Forward Pass: In diesem Schritt berechnet das Modell Vorhersagen basierend auf den Eingabedaten und ermittelt den Verlust, indem die Vorhersagen mit den tatsächlichen Zielwerten verglichen werden;
- Backward Pass: In diesem Schritt werden die Gradienten mittels Backpropagation (basierend auf dem Verlust) berechnet und die Gewichte und Biases des Modells mit einem Optimierungsalgorithmus, in unserem Fall SGD, aktualisiert.
Dieser Prozess wird für die festgelegte Anzahl an Epochen wiederholt, um den Verlust zu minimieren und die Leistung des Modells zu verbessern.
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()}")
Die Parameter des Modells, nämlich seine Gewichte und Biases, können über die Attribute .weight
und .bias
abgerufen werden:
weights = model.weight.item()
biases = model.bias.item()
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain how to interpret the trained weight and bias values?
How can I use the trained model to make predictions on new data?
What does the loss value tell us about the model's performance?
Awesome!
Completion rate improved to 5
Lineare Regression
Swipe um das Menü anzuzeigen
Wir verwenden einen realen Datensatz, um lineare Regression in PyTorch zu implementieren. Der Datensatz enthält zwei Spalten:
'Number of Appliances'
: die Anzahl der Geräte in einem Haushalt (Eingabemerkmal,X
);'Electricity Bill'
: der entsprechende Betrag der Stromrechnung (Zielausgabe,Y
).
1. Laden und Überprüfen des Datensatzes
Der Datensatz ist in einer CSV-Datei gespeichert. Wir laden ihn mit pandas
und überprüfen die ersten Zeilen:
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. Vorbereitung der Daten für PyTorch
Als Nächstes sollten die Eingabe- (X
) und Zielspalten (Y
) extrahiert, in PyTorch-Tensoren umgewandelt und in 2D-Tensoren umgeformt werden, um die Kompatibilität mit den Operationen von PyTorch sicherzustellen:
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. Definition des linearen Modells
Das nn.Linear
-Modul in PyTorch definiert eine vollständig verbundene Schicht, die y = xW
Die wichtigsten Parameter sind:
in_features
: Anzahl der Eingabemerkmale (unabhängige Variablen);out_features
: Anzahl der Ausgabemerkmale (vorhergesagte Werte).
Für eine einfache lineare Regression, wie in unserem Fall, wird ein einzelner Output auf Basis einer Eingabe vorhergesagt. Daher gilt:
in_features=1
: eine Eingabevariable;out_features=1
: ein vorhergesagter Wert.
import torch.nn as nn
# Define the linear regression model
model = nn.Linear(in_features=1, out_features=1)
4. Definition der Verlustfunktion und des Optimierers
Wir verwenden den mittleren quadratischen Fehler (MSE) als Verlustfunktion und stochastischen Gradientenabstieg (SGD) als Optimierer mit einer Lernrate von 0.005
.
Die MSE-Verlustfunktion kann mit der Klasse nn.MSELoss
definiert werden und SGD mit der entsprechenden Klasse aus dem Modul torch.optim
.
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. Training des Modells
Das Training umfasst das Durchführen eines Forward Pass und eines Backward Pass für eine festgelegte Anzahl von Epochen.
- Forward Pass: In diesem Schritt berechnet das Modell Vorhersagen basierend auf den Eingabedaten und ermittelt den Verlust, indem die Vorhersagen mit den tatsächlichen Zielwerten verglichen werden;
- Backward Pass: In diesem Schritt werden die Gradienten mittels Backpropagation (basierend auf dem Verlust) berechnet und die Gewichte und Biases des Modells mit einem Optimierungsalgorithmus, in unserem Fall SGD, aktualisiert.
Dieser Prozess wird für die festgelegte Anzahl an Epochen wiederholt, um den Verlust zu minimieren und die Leistung des Modells zu verbessern.
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()}")
Die Parameter des Modells, nämlich seine Gewichte und Biases, können über die Attribute .weight
und .bias
abgerufen werden:
weights = model.weight.item()
biases = model.bias.item()
Danke für Ihr Feedback!