Phần 5: Supervised Learning: Classification phần 2 – Lập trình AI bằng Python

4. Logistic Regression
Về căn bản, mô hình hồi quy logistic là 1 trong các thành viên của họ thuật toán phân loại có theo dõi. Hồi quy logistic đo lường mối quan hệ giữa các biến phụ thuộc và các biến độc lập bằng cách ước lượng xác suất bằng cách sử dụng 1 hàm logistic.
Tại đây, nếu như ta nói về các biến phụ thuộc và độc lập thì biến phụ thuộc là biến lớp mục tiêu mà ta sẽ dự đoán và ở bên cạnh đó, các biến độc lập là các tính năng ta sẽ dùng để dự đoán lớp mục tiêu.
Trong hồi quy logistic, ước lượng xác suất nghĩa là dự đoán khả năng xảy ra sự kiện. Ví dụ, chủ cửa hàng muốn dự đoán khách hàng vào cửa hàng có mua sắm thả ga (ví dụ) hay là không. Sẽ có nhiều đặc điểm về khách hàng – giới tính, độ tuổi, v.v. sẽ được nhân viên cửa hàng quan sát để dự đoán khả năng xảy ra, tức là có mua trạm chơi hay là không. Hàm logistic là đường cong sigmoid được dùng để xây dựng hàm với những tham số khác nhau.
Điều kiện tiên quyết:
Trước khi xây dựng bộ phân loại bằng cách sử dụng hồi quy logistic, ta cần cài đặt gói Tkinter trên hệ thống của chính mình. Nó có thể được cài đặt từ https://docs.python.org/2/library/tkinter.html.
Hiện tại, với sự giúp đỡ của đoạn mã sau đây, chúng ta sẽ có thể tạo bộ phân loại bằng cách sử dụng hồi quy logistic –
Đầu tiên, chúng tôi sẽ nhập những gói –
import numpy as np
from sklearn import linear_model
import matplotlib.pyplot as plt
Hiện tại, ta cần xác định dữ liệu mẫu có thể được bắt đầu như dưới đây:
X = np.array([[2, 4.8], [2.9, 4.7], [2.5, 5], [3.2, 5.5], [6, 5], [7.6, 4],
[3.2, 0.9], [2.9, 1.9],[2.4, 3.5], [0.5, 3.4], [1, 4], [0.9, 5.9]])
y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3])
Tiếp theo, ta cần tạo bộ phân loại hồi quy logistic, có thể được bắt đầu như dưới đây:
Classifier_LR = linear_model.LogisticRegression(solver = 'liblinear', C = 75)
Cuối cùng nhưng chẳng kém phần quan trọng, ta cần đào tạo classifier này :
Classifier_LR.match(X, y)
Hiện tại, làm sao chúng ta sẽ có thể hình dung đầu ra? Nó có thể được bắt đầu bằng cách tạo 1 hàm có tên Logistic_visualize () –
Def Logistic_visualize(Classifier_LR, X, y):
min_x, max_x = X[:, 0].min() - 1.0, X[:, 0].max() + 1.0
min_y, max_y = X[:, 1].min() - 1.0, X[:, 1].max() + 1.0
Trong dòng trên, chúng tôi đã xác định những giá trị tối thiểu và tối đa X và Y được dùng trong lưới lưới. Ngoài ra, chúng tôi sẽ xác định kích thước bước để vẽ lưới ô vuông.
mesh_step_size = 0.02
xác định những giá trị X và Y như dưới đây:
x_vals, y_vals = np.meshgrid(np.arange(min_x, max_x, mesh_step_size),
np.arange(min_y, max_y, mesh_step_size))
output = classifier.predict(np.c_(*2*))
output = output.reshape(x_vals.form)
plt.determine()
plt.pcolormesh(x_vals, y_vals, output, cmap = plt.cm.grey)
plt.scatter(X[:, 0], X[:, 1], c = y, s = 75, edgecolors = 'black',
linewidth=1, cmap = plt.cm.Paired)
Đoạn mã sau sẽ xác định ranh giới của lô đất
plt.xlim(x_vals.min(), x_vals.max())
plt.ylim(y_vals.min(), y_vals.max())
plt.xticks((np.arange(int(X[:, 0].min() - 1), int(X[:, 0].max() + 1), 1.0)))
plt.yticks((np.arange(int(X[:, 1].min() - 1), int(X[:, 1].max() + 1), 1.0)))
plt.present()
Hiện tại, sau khi chạy mã, ta sẽ được nhận kết quả sau, bộ phân loại hồi quy logistic –