Phần 6: Supervised Learning: Regression – Lập trình AI bằng Python

Hồi quy là 1 trong các công cụ quan trọng nhất. Mình sẽ không sai khi nói rằng hành trình của học máy khởi đầu từ hồi quy. Nó có thể được định nghĩa rằng kỹ thuật tham số cho phép ta ra quyết định dựa vào dữ liệu hay nói theo cách khác cho phép ta đưa ra dự đoán dựa vào dữ liệu bằng cách tìm hiểu mối quan hệ giữa các biến đầu vào và đầu ra. Tại đây, các biến đầu ra dựa vào các biến đầu vào, là những số thực có giá trị liên tiếp. Trong hồi quy, mối quan hệ giữa các biến đầu vào và đầu ra rất quan trọng và nó giúp ta hiểu rõ được giá trị của biến đầu ra thay đổi ra sao với sự thay đổi của biến đầu vào. Hồi quy thường được dùng để dự đoán giá cả, kinh tế, những biến thể, v.v.
Xây dựng Regressors bằng Python :
Trong phần này, ta sẽ học cách xây dựng bộ hồi quy đơn cũng như là đa biến.
a. Single Variable Regressor :
Import các thư viện cần thiết :
import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
Load dữ liệu bằng cách sử dụng hàm np.loadtxt :
input_data = np.loadtxt(enter, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]
Bước kế tiếp sẽ là đào tạo mô hình. Tiến hành đưa bộ dữ liệu vào traning và testing
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:]
Tiếp theo ta sẽ tạo linear regressor object
reg_linear = linear_model.LinearRegression()
Đào tạo object bằng tập traning
reg_linear.match(X_train, y_train)
Sau đó ta cần dự đoán với dữ liệu testing :
y_test_pred = reg_linear.predict(X_test)
Vẽ và hiển thị dữ liệu :
plt.scatter(X_test, y_test, shade = 'pink')
plt.plot(X_test, y_test_pred, shade = 'black', linewidth = 2)
plt.xticks(())
plt.yticks(())
plt.present()
Output :
Hiện tại , ta bắt đầu tính toán các tham số về mô hình ta đã xây dựng như dưới đây :
print("Performance of Linear regressor:")
print("Mean absolute error =", spherical(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", spherical(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", spherical(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance rating =", spherical(sm.explained_variance_score(y_test, y_test_pred),
2))
print("R2 rating =", spherical(sm.r2_score(y_test, y_test_pred), 2))
Output :
Mean absolute error = 1.78
Mean squared error = 3.89
Median absolute error = 2.01
Explain variance rating = -0.09
R2 rating = -0.09
Ở đoạn mã trên, mình đã sử dụng lượng nhỏ dữ liệu, nếu như bạn cần dùng các dataset lớn thì ta nên sử dụng sklearn.dataset để import
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
b. Multivariable Regressor
Đầu tiên, ta bắt đầu import một số thư viện cần thiết :
import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialOptions
Sau đó, cần cung cấp dữ liệu đầu vào và mình đã lưu trữ dữ liệu với tên là linear.txt
enter = 'D:/ProgramData/Mul_linear.txt'
Load dữ liệu với hàm np.loadtxt :
input_data = np.loadtxt(enter, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]
Bước kế tiếp cần practice mannequin, ta sẽ lấy mẫu traning và testing
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:]
Tạo linear regressor object :
reg_linear_mul = linear_model.LinearRegression()
coaching object với traning samples
reg_linear_mul.match(X_train, y_train)
Cuồi cùng ta sẽ dự đoán đến tập dữ liệu take a look at
y_test_pred = reg_linear_mul.predict(X_test)
print("Performance of Linear regressor:")
print("Mean absolute error =", spherical(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", spherical(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", spherical(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance rating =", spherical(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 rating =", spherical(sm.r2_score(y_test, y_test_pred), 2))
Output :
Mean absolute error = 0.6
Mean squared error = 0.65
Median absolute error = 0.41
Explain variance rating = 0.34
R2 rating = 0.33
Hiện tại, ta sẽ tạo 1 đa thức bậc 10 và huấn luyện bộ hồi quy
polynomial = PolynomialOptions(diploma = 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.match(X_train_transformed, y_train)
print("nLinear regression:n", reg_linear_mul.predict(datapoint))
print("nPolynomial regression:n", poly_linear_model.predict(poly_datapoint))
Output
Linear regression :
[2.40170462]
Polynomial regression −
[1.8697225]
Trong đoạn mã trên, mình đã sử dụng dữ liệu nhỏ này. Nếu như bạn cần có 1 tập dữ liệu lớn, bạn sẽ có thể sử dụng sklearn.dataset để nhập 1 tập dữ liệu lớn hơn.
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