PyTorch - Doğrusal Regresyon

Bu bölümde, TensorFlow kullanarak doğrusal regresyon uygulamasının temel örneğine odaklanacağız. Lojistik regresyon veya doğrusal regresyon, ayrı ayrı kategorilerin sınıflandırılması için denetlenen bir makine öğrenimi yaklaşımıdır. Bu bölümdeki amacımız, bir kullanıcının tahmin değişkenleri ile bir veya daha fazla bağımsız değişken arasındaki ilişkiyi tahmin edebileceği bir model oluşturmaktır.

Bu iki değişken arasındaki ilişki doğrusal olarak kabul edilir, yani eğer y bağımlı değişkense ve x bağımsız değişken olarak kabul edilirse, iki değişkenin doğrusal regresyon ilişkisi aşağıda belirtilen denklem gibi görünecektir -

Y = Ax+b

Ardından, aşağıda verilen iki önemli kavramı anlamamıza izin veren doğrusal regresyon için bir algoritma tasarlayacağız -

  • Maliyet fonksiyonu
  • Gradyan İniş Algoritmaları

Doğrusal regresyonun şematik gösterimi aşağıda belirtilmiştir

Sonucu yorumlamak

$$ Y = ax + b $$

  • Değeri a eğimdir.

  • Değeri b ... y − intercept.

  • r ... correlation coefficient.

  • r2 ... correlation coefficient.

Doğrusal regresyon denkleminin grafik görünümü aşağıda belirtilmiştir -

PyTorch kullanarak doğrusal regresyon uygulamak için aşağıdaki adımlar kullanılır -

Aşama 1

Aşağıdaki kodu kullanarak PyTorch'da doğrusal bir regresyon oluşturmak için gerekli paketleri içe aktarın -

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

Adım 2

Aşağıda gösterildiği gibi mevcut veri kümesiyle tek bir eğitim seti oluşturun -

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)

Aşama 3

Aşağıda belirtildiği gibi PyTorch kitaplıkları ile doğrusal regresyon uygulayı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')

Oluşturulan arsa aşağıdaki gibidir -