Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Hồi quy tuyến tính và hồi quy Logistic trong Python
Trong bài viết này, mình sẽ tái cấu trúc (refactor) mã nguồn từ hai bài trước để triển khai Hồi Quy Tuyến Tính (Linear Regression) và Hồi Quy Logistic (Logistic Regression) chỉ trong 60 dòng mã Python! Điều này được thực hiện bằng cách xây dựng lớp cơ sở BaseRegression, giúp tái sử dụng và tổ chức mã hiệu quả hơn.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
Mục tiêu tái cấu trúc
- Loại bỏ phần mã trùng lặp trong hai thuật toán.
- Sử dụng lớp cơ sở (
BaseRegression) làm nền tảng để kế thừa. - Dễ dàng mở rộng hoặc sửa đổi các thuật toán khác dựa trên
BaseRegression.
Triển khai chi tiết Linear Regression và Logistic Regression trong Python
.jpg)
Lớp cơ sở: BaseRegression
Lớp BaseRegression chứa các thành phần dùng chung như:
- Các tham số: .
- Cơ chế huấn luyện (
fit) sử dụng Gradient Descent. - Hàm dự đoán (
predict), có thể tùy chỉnh cho từng lớp con.
import numpy as np
class BaseRegression:
def __init__(self, learning_rate=0.001, n_iters=1000):
"""
Khởi tạo lớp cơ sở với tốc độ học và số lần lặp.
"""
self.lr = learning_rate
self.n_iters = n_iters
self.weights = None
self.bias = None
def fit(self, X, y):
"""
Huấn luyện mô hình bằng Gradient Descent.
"""
n_samples, n_features = X.shape
# Khởi tạo trọng số và bias
self.weights = np.zeros(n_features)
self.bias = 0
# Lặp Gradient Descent
for _ in range(self.n_iters):
y_predicted = self._approximation(X, self.weights, self.bias)
# Tính gradient
dw = (1 / n_samples) * np.dot(X.T, (y_predicted - y))
db = (1 / n_samples) * np.sum(y_predicted - y)
# Cập nhật trọng số và bias
self.weights -= self.lr * dw
self.bias -= self.lr * db
def predict(self, X):
"""
Hàm dự đoán, được triển khai trong từng lớp con.
"""
return self._predict(X, self.weights, self.bias)
# Các phương thức trừu tượng cần triển khai
def _predict(self, X, w, b):
raise NotImplementedError("Hàm dự đoán cần được triển khai trong lớp con.")
def _approximation(self, X, w, b):
raise NotImplementedError("Hàm xấp xỉ cần được triển khai trong lớp con.")

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng