PyTorch - Regresi Linier

Pada bab ini, kita akan berfokus pada contoh dasar penerapan regresi linier menggunakan TensorFlow. Regresi logistik atau regresi linier adalah pendekatan pembelajaran mesin yang diawasi untuk klasifikasi kategori pesanan berlainan. Tujuan kita dalam bab ini adalah untuk membangun model yang dapat digunakan pengguna untuk memprediksi hubungan antara variabel prediktor dan satu atau lebih variabel independen.

Hubungan antara kedua variabel ini dianggap linier yaitu jika y sebagai variabel terikat dan x dianggap sebagai variabel bebas, maka hubungan regresi linier kedua variabel akan terlihat seperti persamaan yang disebutkan di bawah ini -

Y = Ax+b

Selanjutnya, kita akan merancang algoritme untuk regresi linier yang memungkinkan kita memahami dua konsep penting yang diberikan di bawah ini -

  • Fungsi Biaya
  • Algoritma Penurunan Gradien

Representasi skematis dari regresi linier disebutkan di bawah ini

Menafsirkan hasilnya

$$ Y = ax + b $$

  • Nilai dari a adalah lereng.

  • Nilai dari b adalah y − intercept.

  • r adalah correlation coefficient.

  • r2 adalah correlation coefficient.

Tampilan grafik dari persamaan regresi linier disebutkan di bawah ini -

Langkah-langkah berikut digunakan untuk mengimplementasikan regresi linier menggunakan PyTorch -

Langkah 1

Impor paket yang diperlukan untuk membuat regresi linier di PyTorch menggunakan kode di bawah ini -

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

Langkah 2

Buat satu set pelatihan dengan set data yang tersedia seperti yang ditunjukkan di bawah ini -

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)

LANGKAH 3

Menerapkan regresi linier dengan pustaka PyTorch seperti yang disebutkan di bawah ini -

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

Plot yang dihasilkan adalah sebagai berikut -