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:
A continuación se menciona una representación esquemática de la regresión lineal.
$$ 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:
Los siguientes pasos se utilizan para implementar la regresión lineal usando PyTorch:
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
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)
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Ã:
🚫