使用PyTorch实现线性回归
线性回归是一种常用的回归算法,它可以用于预测连续变量的值。在本文中,我们将介绍如何使用PyTorch实现线性回归,并提供两个示例说明。
示例1:使用自己生成的数据实现线性回归
以下是一个使用自己生成的数据实现线性回归的示例代码:
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt
# Generate data
np.random.seed(42)
X = np.random.rand(100, 1)
y = 2 * X + 0.5 + np.random.randn(100, 1) * 0.1
# Convert data to tensors
X = torch.from_numpy(X).float()
y = torch.from_numpy(y).float()
# Define linear regression model
class LinearRegression(nn.Module):
def __init__(self):
super(LinearRegression, self).__init__()
self.linear = nn.Linear(1, 1)
def forward(self, x):
x = self.linear(x)
return x
# Train linear regression model
model = LinearRegression()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)
for epoch in range(100):
optimizer.zero_grad()
y_pred = model(X)
loss = criterion(y_pred, y)
loss.backward()
optimizer.step()
# Plot results
plt.scatter(X.numpy(), y.numpy())
plt.plot(X.numpy(), model(X).detach().numpy(), color='red')
plt.show()
在这个示例中,我们首先生成了一些随机数据,并将其转换为PyTorch张量。然后,我们定义了一个LinearRegression类来实现线性回归模型。在训练过程中,我们使用均方误差损失函数和随机梯度下降优化器来训练模型。在训练完成后,我们使用训练好的模型对数据进行预测,并将结果可视化。
示例2:使用房价数据集实现线性回归
以下是一个使用房价数据集实现线性回归的示例代码:
import torch
import torch.nn as nn
import torch.optim as optim
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Load Boston Housing dataset
boston = load_boston()
X = boston.data
y = boston.target
# Preprocess data
scaler = StandardScaler()
X = scaler.fit_transform(X)
y = (y - y.mean()) / y.std()
# Split data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Convert data to tensors
X_train = torch.from_numpy(X_train).float()
y_train = torch.from_numpy(y_train).float()
X_test = torch.from_numpy(X_test).float()
y_test = torch.from_numpy(y_test).float()
# Define linear regression model
class LinearRegression(nn.Module):
def __init__(self):
super(LinearRegression, self).__init__()
self.linear = nn.Linear(13, 1)
def forward(self, x):
x = self.linear(x)
return x
# Train linear regression model
model = LinearRegression()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)
for epoch in range(100):
optimizer.zero_grad()
y_pred = model(X_train)
loss = criterion(y_pred, y_train.view(-1, 1))
loss.backward()
optimizer.step()
# Test linear regression model
y_pred = model(X_test)
mse = criterion(y_pred, y_test.view(-1, 1))
print('MSE:', mse.item())
在这个示例中,我们首先加载波士顿房价数据集,并对数据进行预处理。然后,我们将数据集分成训练集和测试集,并定义一个LinearRegression类来实现线性回归模型。在训练过程中,我们使用均方误差损失函数和随机梯度下降优化器来训练模型。在测试过程中,我们使用训练好的模型对测试集进行预测,并计算模型的均方误差。
总结
在本文中,我们介绍了如何使用PyTorch实现线性回归,并提供了两个示例说明。这些技术对于在深度学习中进行回归任务非常有用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用pytorch实现线性回归 - Python技术站