Hồi quy là một trong những công cụ học máy và thống kê quan trọng nhất. Chúng tôi sẽ không sai khi nói rằng hành trình học máy bắt đầu từ hồi quy. Nó có thể được định nghĩa là kỹ thuật tham số cho phép chúng ta đưa ra quyết định dựa trên dữ liệu hay nói cách khác cho phép chúng ta đưa ra dự đoán dựa trên 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. Ở đây, các biến đầu ra phụ thuộc vào các biến đầu vào, là các số thực có giá trị liên tục. 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 chúng ta hiểu giá trị của biến đầu ra thay đổi như thế nào với sự thay đổi của biến đầu vào. Hồi quy thường được sử dụng để dự đoán giá cả, kinh tế, biến thể, v.v.
Xây dựng hồi quy trong Python
Trong phần này, chúng ta sẽ tìm hiểu cách xây dựng biến hồi quy đơn biến cũng như đa biến trong python
Hồi quy tuyến tính / Hồi quy biến đơn
Hãy để chúng tôi quan trọng một vài gói cần thiết
import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
Bây giờ, chúng tôi cần cung cấp dữ liệu đầu vào và chúng tôi đã lưu dữ liệu của mình trong tệp có tên linear.txt.
input = 'D:/ProgramData/linear.txt'
Chúng ta cần tải dữ liệu này bằng cách sử dụng hàm np.loadtxt .
input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]
Bước tiếp theo sẽ là đào tạo mô hình. Hãy để chúng tôi cung cấp các mẫu đào tạo và thử nghiệm.
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:]
Bây giờ, chúng ta cần tạo một đối tượng hồi quy tuyến tính.
reg_linear = linear_model.LinearRegression()
Huấn luyện đối tượng với các mẫu huấn luyện.
reg_linear.fit(X_train, y_train)
Chúng ta cần thực hiện dự đoán với dữ liệu thử nghiệm.
y_test_pred = reg_linear.predict(X_test)
Bây giờ vẽ đồ thị và trực quan hóa dữ liệu
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()
đầu ra
Bây giờ, chúng ta có thể tính toán hiệu suất của hồi quy tuyến tính như sau
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))
đầu ra
Hiệu suất của hồi quy tuyến tính
Mean absolute error = 1.78
Mean squared error = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09
Trong đoạn mã trên, chúng tôi đã sử dụng dữ liệu nhỏ này. Nếu bạn muốn một số tập dữ liệu lớn thì bạn có thể sử dụng sklearn.dataset để nhập tập dữ liệu lớn hơn.
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
hồi quy đa biến
Đầu tiên, chúng ta hãy nhập một vài gói 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 PolynomialFeatures
Bây giờ, chúng tôi cần cung cấp dữ liệu đầu vào và chúng tôi đã lưu dữ liệu của mình trong tệp có tên linear.txt.
input = 'D:/ProgramData/Mul_linear.txt'
Chúng tôi sẽ tải dữ liệu này bằng cách sử dụng chức năng np.loadtxt .
input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]
Bước tiếp theo sẽ là đào tạo mô hình; chúng tôi sẽ cung cấp các mẫu đào tạo và thử nghiệm.
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:]
Bây giờ, chúng ta cần tạo một đối tượng hồi quy tuyến tính.
reg_linear_mul = linear_model.LinearRegression()
Huấn luyện đối tượng với các mẫu huấn luyện.
reg_linear_mul.fit(X_train, y_train)
Bây giờ, cuối cùng chúng ta cần thực hiện dự đoán với dữ liệu thử nghiệm.
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))
đầu ra
Hiệu suất của hồi quy tuyến tính
Mean absolute error = 0.6
Mean squared error = 0.65
Median absolute error = 0.41
Explain variance score = 0.34
R2 score = 0.33
Bây giờ, chúng ta sẽ tạo một đa thức bậc 10 và huấn luyện biến hồi quy. Chúng tôi sẽ cung cấp điểm dữ liệu mẫu.
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))
đầu ra
Hồi quy tuyến tính –
[2.40170462]
Hồi quy đa thức –
[1.8697225]
Trong đoạn mã trên, chúng tôi đã sử dụng dữ liệu nhỏ này. Nếu bạn muốn có một tập dữ liệu lớn, thì bạn có thể sử dụng sklearn.dataset để nhập 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
Xem thêm : AI với Python – Lập trình logic