使用pytorch实现线性回归

yizhihongxing

使用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技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Pytorch中expand()的使用(扩展某个维度)

    PyTorch中expand()的使用(扩展某个维度) 在PyTorch中,expand()函数可以用来扩展张量的某个维度,从而实现张量的形状变换。expand()函数会自动复制张量的数据,以填充新的维度。下面是expand()函数的详细使用方法: torch.Tensor.expand(*sizes) -> Tensor 其中,*sizes是一个可变…

    PyTorch 2023年5月15日
    00
  • 使用tensorboardX可视化Pytorch

    可视化loss和acc 参考https://www.jianshu.com/p/46eb3004beca 环境安装: conda activate xxx pip install tensorboardX pip install tensorflow 代码: from tensorboardXimport SummaryWriterwriter = Summ…

    PyTorch 2023年4月8日
    00
  • PyTorch教程【六】Transforms的使用

    from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transforms # python的用法->tensor数据类型 # 通过transforms.ToTensor去看两个问题 # 绝对路径:D:leran_p…

    2023年4月6日
    00
  • opencv 调用 pytorch训练的resnet模型

    使用OpenCV的DNN模块调用pytorch训练的分类模型,这里记录一下中间的流程,主要分为模型训练,模型转换和OpenCV调用三步。 一、训练二分类模型 准备二分类数据,直接使用torchvision.models中的resnet18网络,主要编写的地方是自定义数据类中的__getitem__,和网络最后一层。 __getitem__ 将同类数据放在不同…

    PyTorch 2023年4月8日
    00
  • windows 安装 pytorch

    之前都在服务器上跑pytorch,近来发现新版本可在windows上跑了,甚是开心。 环境: windows7  python3 无CPU 步骤: 1. 确保确保python版本在3.5.3/3.6.2及以上版本,更新时只需下载所需的python setup exe,会有更新提示,无需 2. 到pytorch官网 https://pytorch.org/  …

    2023年4月8日
    00
  • 详解Pytorch中Dataset的使用

    详解PyTorch中Dataset的使用 在PyTorch中,Dataset是一个抽象类,用于表示数据集。Dataset类提供了一种统一的方式来处理数据集,使得我们可以轻松地加载和处理数据。本文将详细介绍Dataset类的使用方法和示例。 1. 创建自定义数据集 要使用Dataset类,我们需要创建一个自定义的数据集类,该类必须继承自Dataset类,并实现…

    PyTorch 2023年5月15日
    00
  • pytorch1.0神经网络保存、提取、加载

    pytorch1.0网络保存、提取、加载 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib.pyplot as plt # 假数据 x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1) # x data (tenso…

    PyTorch 2023年4月6日
    00
  • pytorch中 model.cuda的作用

    在pytorch中,即使是有GPU的机器,它也不会自动使用GPU,而是需要在程序中显示指定。调用model.cuda(),可以将模型加载到GPU上去。这种方法不被提倡,而建议使用model.to(device)的方式,这样可以显示指定需要使用的计算资源,特别是有多个GPU的情况下。

    PyTorch 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部