开发手册 欢迎您!
软件开发者资料库

PyTorch 线性回归(Linear Regression)

参考使用TensorFlow实现线性回归的基本例子。Logistic回归或线性回归是一种有监督的机器学习方法,用于分类的顺序离散类别。本文主要介绍是建立一个模型,用户可以通过这个模型预测预测器变量和一个或多个自变量之间的关系。

这两个变量之间的关系被认为是线性的,如果y是从属变量,并且被认为是独立变量的x,则两个变量的线性回归关系将看起来像下面提到的等式一样

Y = Ax+b

接下来,我们将设计一种线性回归算法,其允许我们了解下面给出的两个重要概念 -

  • 成本职能
  • 梯度下降算法

下面提到线性回归的示意图

httpswwwwonherocom

1、解决结果

  • a的值是斜率。
  • b的值为y−截距。
  • r相关系数
  • r2是相关系数。

下面提到了线性回归方程的图形视图 -

httpswwwwonherocom

以下步骤用于使用Pytorch实现线性回归:

步骤1

导入必要的包以使用以下代码在Pytorch中创建线性回归:

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimationimport seaborn as snsimport pandas as pd%matplotlib inlinesns.set_style(style = 'whitegrid')plt.rcParams["patch.force_edgecolor"] = True

步骤2

使用如下所示的可用数据集创建单个训练集:

m = 2 # slopec = 3 # interceptm = 2 # slopec = 3 # interceptx = np.random.rand(256)noise = np.random.randn(256) / 4y = x * m + c + noisedf = pd.DataFrame()df['x'] = xdf['y'] = ysns.lmplot(x ='x', y ='y', data = df)

httpswwwwonherocom

步骤3

实现与Pytorch库的线性回归如下所述:

import torchimport torch.nn as nnfrom torch.autograd import Variablex_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 outinput_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 + b1plt.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')

生成的曲线如下:
httpswwwwonherocom