PyTorch – regresión lineal

En este capítulo, nos centraremos en un ejemplo de implementación de regresión lineal básica usando TensorFlow. La regresión logística o regresión lineal es un enfoque de aprendizaje automático supervisado para clasificar categorías de órdenes discretas. Nuestro objetivo en este capítulo es construir un modelo con el que un usuario pueda predecir la relación entre las variables predictoras y una o más variables independientes.

La relación entre estas dos variables se considera lineal, es decir, si y es la variable dependiente y x se considera la variable independiente, entonces la relación de regresión lineal de las dos variables se verá como la ecuación que se menciona a continuación:

Y = Ax+b

Luego, desarrollaremos un algoritmo de regresión lineal que nos permitirá comprender dos conceptos importantes a continuación:

  • Función de costo
  • Algoritmos de descenso de gradientes

A continuación se menciona una representación esquemática de la regresión lineal.

Interpretando el resultado

$$ Y = ax + b $$

  • Valor y esta es la pendiente.

  • Valor B este es y – interceptar

  • R este es coeficiente de correlación

  • r2 este es coeficiente de correlación

La vista gráfica de la ecuación de regresión lineal se menciona a continuación:

Interpretando el resultado

Los siguientes pasos se utilizan para implementar la regresión lineal usando PyTorch:

Paso 1

Importe los paquetes necesarios para generar regresión lineal en PyTorch usando el siguiente código:

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

Paso 2

Cree un único conjunto de entrenamiento con el conjunto de datos disponible como se muestra a continuación:

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)

Entrenamiento individual

Paso 3

Implemente la regresión lineal con las bibliotecas de PyTorch como se indica a continuación:

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')

La trama se ve así:

Se crea la trama

🚫