AI với Python - Học được giám sát: Hồi quy
Hồi quy là một trong những công cụ thống kê và máy học quan trọng nhất. Chúng tôi sẽ không sai khi nói rằng hành trình của 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 hoặc 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 được 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ế, các biến thể, v.v.
Xây dựng Regressors bằng Python
Trong phần này, chúng ta sẽ học cách xây dựng bộ hồi quy đơn cũng như đa biến.
Bộ hồi quy tuyến tính / Bộ hồi quy biến đơn
Hãy để chúng tôi quan trọng một vài gói bắt buộc -
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 là linear.txt.
input = 'D:/ProgramData/linear.txt'
Chúng tôi cần tải dữ liệu này bằng cách sử dụng np.loadtxt chức năng.
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 cho đào tạo và thử nghiệm mẫu.
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 bằng các mẫu huấn luyện.
reg_linear.fit(X_train, y_train)
Chúng tôi 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ẽ và hình dung 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 bộ 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
Bộ hồi quy đa biến
Trước tiên, hãy để chúng tôi nhập một vài gói bắt buộc -
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 là 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 np.loadtxt chức năng.
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 cho đào tạo và thử nghiệm mẫu.
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 bằng 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 bộ 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 bộ 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 một tập dữ liệu lớn, bạn có thể sử dụng sklearn.dataset để nhập một 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