AI dengan Python - Pembelajaran yang Diawasi: Regresi

Regresi adalah salah satu alat statistik dan pembelajaran mesin yang paling penting. Kami tidak salah untuk mengatakan bahwa perjalanan pembelajaran mesin dimulai dari regresi. Ini dapat didefinisikan sebagai teknik parametrik yang memungkinkan kita membuat keputusan berdasarkan data atau dengan kata lain memungkinkan kita membuat prediksi berdasarkan data dengan mempelajari hubungan antara variabel input dan output. Di sini, variabel keluaran yang bergantung pada variabel masukan, adalah bilangan real bernilai kontinu. Dalam regresi, hubungan antara variabel input dan output sangat penting dan ini membantu kita dalam memahami bagaimana nilai variabel output berubah dengan perubahan variabel input. Regresi sering digunakan untuk prediksi harga, ekonomi, variasi, dan sebagainya.

Membangun Regresor dengan Python

Pada bagian ini, kita akan belajar bagaimana membangun regressor tunggal serta multivariabel.

Regresor Linier / Regresor Variabel Tunggal

Biarkan kami penting beberapa paket yang diperlukan -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt

Sekarang, kita perlu memberikan data masukan dan kita telah menyimpan data kita dalam file bernama linear.txt.

input = 'D:/ProgramData/linear.txt'

Kita perlu memuat data ini dengan menggunakan np.loadtxt fungsi.

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

Langkah selanjutnya adalah melatih model. Mari kita berikan contoh pelatihan dan pengujian.

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

Sekarang, kita perlu membuat objek regresi linier.

reg_linear = linear_model.LinearRegression()

Latih objek dengan sampel pelatihan.

reg_linear.fit(X_train, y_train)

Kita perlu melakukan prediksi dengan data pengujian.

y_test_pred = reg_linear.predict(X_test)

Sekarang plot dan visualisasikan datanya.

plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2)
plt.xticks(())
plt.yticks(())
plt.show()

Keluaran

Sekarang, kita dapat menghitung kinerja regresi linier kita sebagai berikut -

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred),
2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

Keluaran

Kinerja Regresor Linear -

Mean absolute error = 1.78
Mean squared error = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09

Dalam kode di atas, kami telah menggunakan data kecil ini. Jika Anda menginginkan kumpulan data yang besar, Anda dapat menggunakan sklearn.dataset untuk mengimpor kumpulan data yang lebih besar.

2,4.82.9,4.72.5,53.2,5.56,57.6,43.2,0.92.9,1.92.4,
3.50.5,3.41,40.9,5.91.2,2.583.2,5.65.1,1.54.5,
1.22.3,6.32.1,2.8

Regresor Multivariabel

Pertama, mari kita impor beberapa paket yang dibutuhkan -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures

Sekarang, kita perlu memberikan data masukan dan kita telah menyimpan data kita dalam file bernama linear.txt.

input = 'D:/ProgramData/Mul_linear.txt'

Kami akan memuat data ini dengan menggunakan np.loadtxt fungsi.

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

Langkah selanjutnya adalah melatih model; kami akan memberikan sampel pelatihan dan pengujian.

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

Sekarang, kita perlu membuat objek regresi linier.

reg_linear_mul = linear_model.LinearRegression()

Latih objek dengan sampel pelatihan.

reg_linear_mul.fit(X_train, y_train)

Sekarang, akhirnya kita perlu melakukan prediksi dengan data pengujian.

y_test_pred = reg_linear_mul.predict(X_test)

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

Keluaran

Kinerja Regresor Linear -

Mean absolute error = 0.6
Mean squared error = 0.65
Median absolute error = 0.41
Explain variance score = 0.34
R2 score = 0.33

Sekarang, kita akan membuat polinomial berderajat 10 dan melatih regressor. Kami akan memberikan titik data sampel.

polynomial = PolynomialFeatures(degree = 10)
X_train_transformed = polynomial.fit_transform(X_train)
datapoint = [[2.23, 1.35, 1.12]]
poly_datapoint = polynomial.fit_transform(datapoint)

poly_linear_model = linear_model.LinearRegression()
poly_linear_model.fit(X_train_transformed, y_train)
print("\nLinear regression:\n", reg_linear_mul.predict(datapoint))
print("\nPolynomial regression:\n", poly_linear_model.predict(poly_datapoint))

Keluaran

Regresi linier -

[2.40170462]

Regresi polinomial -

[1.8697225]

Dalam kode di atas, kami telah menggunakan data kecil ini. Jika Anda menginginkan kumpulan data yang besar, Anda dapat menggunakan sklearn.dataset untuk mengimpor kumpulan data yang lebih besar.

2,4.8,1.2,3.22.9,4.7,1.5,3.62.5,5,2.8,23.2,5.5,3.5,2.16,5,
2,3.27.6,4,1.2,3.23.2,0.9,2.3,1.42.9,1.9,2.3,1.22.4,3.5,
2.8,3.60.5,3.4,1.8,2.91,4,3,2.50.9,5.9,5.6,0.81.2,2.58,
3.45,1.233.2,5.6,2,3.25.1,1.5,1.2,1.34.5,1.2,4.1,2.32.3,
6.3,2.5,3.22.1,2.8,1.2,3.6