- PyTorch 教程
- PyTorch - 首页
- PyTorch - 简介
- PyTorch - 安装
- 神经网络的数学基础
- PyTorch - 神经网络基础
- 机器学习通用工作流程
- 机器学习与深度学习
- 实现第一个神经网络
- 神经网络到功能模块
- PyTorch - 术语
- PyTorch - 加载数据
- PyTorch - 线性回归
- PyTorch - 卷积神经网络
- PyTorch - 循环神经网络
- PyTorch - 数据集
- PyTorch - 卷积网络简介
- 从头开始训练卷积网络
- PyTorch - 卷积网络中的特征提取
- PyTorch - 卷积网络的可视化
- 使用卷积网络进行序列处理
- PyTorch - 词嵌入
- PyTorch - 递归神经网络
- PyTorch 有用资源
- PyTorch - 快速指南
- PyTorch - 有用资源
- PyTorch - 讨论
PyTorch - 线性回归
在本章中,我们将重点关注使用 TensorFlow 实现线性回归的基本示例。逻辑回归或线性回归是一种监督机器学习方法,用于对有序离散类别进行分类。我们本章的目标是构建一个模型,用户可以通过该模型预测预测变量与一个或多个自变量之间的关系。
这两个变量之间的关系被认为是线性的,即如果 y 是因变量,x 被认为是自变量,那么两个变量的线性回归关系将类似于下面提到的等式 -
Y = Ax+b
接下来,我们将设计一个线性回归算法,使我们能够理解下面给出的两个重要概念 -
- 成本函数
- 梯度下降算法
线性回归的示意图如下所示
解释结果
$$Y=ax+b$$
a 的值为斜率。
b 的值为y 截距。
r 是相关系数。
r2 是相关系数。
线性回归方程的图形视图如下所示 -
使用 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')
生成的图形如下所示 -
广告