PyTorch 线性回归
在本章中,我们将重点介绍使用PyTorch实现线性回归的基本示例。逻辑回归或线性回归是一种用于分类有序离散类别的监督机器学习方法。本章的目标是通过建立一个模型,使用户能够预测预测变量和一个或多个独立变量之间的关系。
这两个变量之间的关系被认为是线性的,即如果y是因变量,x被认为是自变量,那么两个变量之间的线性回归关系将如下所示的方程式。
Y = Ax+b
接下来,我们将设计一个线性回归算法,让我们能够理解以下两个重要概念:
- 成本函数
- 梯度下降算法
线性回归的图示表示如下:
解释结果
Y=ax+b
- a 的值是斜率。
-
b 的值是y-截距。
-
r 是相关系数。
-
r 2是相关系数。
线性回归方程的图形表示如下:
使用PyTorch实现线性回归的步骤如下:
步骤1
使用以下代码导入创建PyTorch线性回归所需的包-
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import seaborn as sns
import pandas as pd
%matplotlib inline
sns.set_style(style = 'whitegrid')
plt.rcParams["patch.force_edgecolor"] = True
步骤2
按下面所示,将可用数据集创建成一个单一的训练集 −
m = 2 # slope
c = 3 # interceptm = 2 # slope
c = 3 # intercept
x = np.random.rand(256)
noise = np.random.randn(256) / 4
y = x * m + c + noise
df = pd.DataFrame()
df['x'] = x
df['y'] = y
sns.lmplot(x ='x', y ='y', data = df)
步骤3
按照以下所述使用PyTorch库实施线性回归−
import torch
import torch.nn as nn
from torch.autograd import Variable
x_train = x.reshape(-1, 1).astype('float32')
y_train = y.reshape(-1, 1).astype('float32')
class LinearRegressionModel(nn.Module):
def __init__(self, input_dim, output_dim):
super(LinearRegressionModel, self).__init__()
self.linear = nn.Linear(input_dim, output_dim)
def forward(self, x):
out = self.linear(x)
return out
input_dim = x_train.shape[1]
output_dim = y_train.shape[1]
input_dim, output_dim(1, 1)
model = LinearRegressionModel(input_dim, output_dim)
criterion = nn.MSELoss()
[w, b] = model.parameters()
def get_param_values():
return w.data[0][0], b.data[0]
def plot_current_fit(title = ""):
plt.figure(figsize = (12,4))
plt.title(title)
plt.scatter(x, y, s = 8)
w1 = w.data[0][0]
b1 = b.data[0]
x1 = np.array([0., 1.])
y1 = x1 * w1 + b1
plt.plot(x1, y1, 'r', label = 'Current Fit ({:.3f}, {:.3f})'.format(w1, b1))
plt.xlabel('x (input)')
plt.ylabel('y (target)')
plt.legend()
plt.show()
plot_current_fit('Before training')
生成的图表如下所示−
PyTorch 教程目录
- PyTorch 简介
- PyTorch 安装
- PyTorch 神经网络的数学基本构建模块
- PyTorch 神经网络基础
- PyTorch 机器学习的通用工作流程
- PyTorch 机器学习 vs. 深度学习
- PyTorch 实现第一个神经网络
- PyTorch 神经网络到功能块
- PyTorch 术语
- PyTorch 加载数据
- PyTorch 线性回归
- PyTorch 卷积神经网络
- PyTorch 循环神经网络
- PyTorch 数据集
- PyTorch 卷积神经网络介绍
- PyTorch 从头训练一个卷积神经网络
- PyTorch 卷积神经网络中的特征提取
- PyTorch 卷积神经网络的可视化
- PyTorch 序列处理与卷积
- PyTorch 词嵌入
- PyTorch 递归神经网络