Hồi quy tuyến tính tìm ra một hàm số tuyến tính, trong đó mối quan hệ giữa các biến được mô tả bằng một đường thẳng.
Công thức chung của hồi quy tuyến tính đơn giản với một biến độc lập là:
Trong đó:
Hệ số góc
Ứng dụng hàm hồi quy tuyến tính trong lập trình nhất là python rất hiệu quả sử dụng để thống kê, dự đoán kết quả.
Dự đoán chiều cao dựa trên tuổi của trẻ em
Giả sử bạn là bác sĩ nhi khoa và bạn muốn dự đoán chiều cao của trẻ em dựa vào độ tuổi. Bạn biết rằng, theo kinh nghiệm, chiều cao của trẻ em có xu hướng tăng dần theo độ tuổi, nhưng không phải là một cách ngẫu nhiên mà có một mối quan hệ gần như tuyến tính (đi lên dần dần theo độ tuổi).
Mô tả tình huống
Bạn có dữ liệu các trẻ em đến khám bênh sổ tuổi và chiều cao như sau:
Tuổi (năm) | Chiều cao (cm) |
---|---|
3 | 90 |
4 | 95 |
5 | 100 |
6 | 105 |
7 | 110 |
Dữ liệu này cho thấy rằng, chiều cao có mối quan hệ trực tiếp với tuổi, và có thể vẽ ra một đường thẳng gần như đi qua tất cả các điểm dữ liệu.
Khi có liên quan thì tính hồi quy tuyến tính mới khả năng ứng dụng.
Câu hỏi: vậy trẻ em 8,9,10 tuổi chiều cao như thế nào ? cách dự đoán ? (cách code python)
Hồi quy tuyến tính giúp bạn tìm ra một đường thẳng mà bạn có thể sử dụng để dự đoán chiều cao của một đứa trẻ bất kỳ khi biết tuổi của chúng.
Trong đó:
Kết quả:
Giả sử sau khi tính toán, bạn có được một công thức hồi quy tuyến tính:
Ý nghĩa của công thức:
Dự đoán chiều cao:
Giờ bạn có thể dự đoán chiều cao của một đứa trẻ dựa trên độ tuổi của nó.
Ví dụ:
Vậy, đứa trẻ 8 tuổi này dự đoán sẽ có chiều cao khoảng 115 cm.
Tóm lại: trên chỉ là giả thuyết, thực tế thì còn nhiều biến để ra kết quả.
scikit-learn (hay còn gọi là sklearn) là một thư viện học máy (machine learning) mã nguồn mở được viết bằng Python. Nó cung cấp các công cụ và thuật toán để xây dựng, huấn luyện và đánh giá các mô hình học máy. scikit-learn được thiết kế dễ sử dụng và phù hợp với các tác vụ như phân loại, hồi quy, phân cụm, giảm chiều dữ liệu, và đánh giá mô hình.
Các thuật toán học máy: scikit-learn cung cấp một loạt các thuật toán học máy như:
Hồi quy tuyến tính (Linear Regression)
Phân loại (Classification) như K-Nearest Neighbors, Logistic Regression, Support Vector Machines (SVM), v.v.
Phân cụm (Clustering) như K-Means, DBSCAN.
Giảm chiều dữ liệu (Dimensionality reduction) như PCA (Principal Component Analysis).
Cài đặt thư viện scikit-learn
Trước tiên, bạn cần cài đặt thư viện scikit-learn
nếu chưa cài: pip install scikit-learn
Code ví dụ hồi quy tuyến tính đơn giản
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# Dữ liệu: Tuổi và Chiều cao
X = np.array([1, 2, 3, 4, 5, 6, 7]).reshape(-1, 1) # Tuổi (một chiều)
y = np.array([50, 60, 90, 95, 100, 105, 110]) # Chiều cao (cm)
# Khởi tạo mô hình hồi quy tuyến tính
model = LinearRegression()
# Huấn luyện mô hình với dữ liệu
model.fit(X, y)
# Dự đoán chiều cao cho một số độ tuổi mới
new_ages = np.array([8, 9, 10]).reshape(-1, 1) # Các độ tuổi mới cần dự đoán
predicted_heights = model.predict(new_ages)
# In kết quả dự đoán
for age, height in zip(new_ages.flatten(), predicted_heights):
print(f"Dự đoán chiều cao cho trẻ {age} tuổi: {height:.2f} cm")
# Vẽ đồ thị thể hiện mối quan hệ giữa tuổi và chiều cao
plt.scatter(X, y, color='blue') # Dữ liệu gốc
plt.plot(X, model.predict(X), color='red') # Đường hồi quy
plt.xlabel("Tuổi (năm)")
plt.ylabel("Chiều cao (cm)")
plt.title("Hồi quy tuyến tính: Tuổi vs Chiều cao")
plt.show()
Giải thích đoạn code python trên
X
là độ tuổi của trẻ em và y
là chiều cao tương ứng. Vì scikit-learn yêu cầu mảng hai chiều cho các đặc trưng (features), nên chúng ta phải chuyển đổi X
thành mảng 2 chiều với reshape(-1, 1)
.LinearRegression()
để tạo một mô hình hồi quy tuyến tính.fit(X, y)
để huấn luyện mô hình với dữ liệu.Kết quả khi thực thi code
Khi chạy chương trình, bạn sẽ nhận được kết quả dự đoán chiều cao của trẻ ở độ tuổi 8, 9 và 10, cùng với đồ thị minh họa.
Dự đoán chiều cao cho trẻ 8 tuổi: 115.00 cm
Dự đoán chiều cao cho trẻ 9 tuổi: 120.00 cm
Dự đoán chiều cao cho trẻ 10 tuổi: 125.00 cm
[Dự đoán giá thịt heo với hồi quy tuyến tính Python]
Hồi quy tuyến tính có thể được áp dụng trong rất nhiều bài toán thực tế như:
đang cập nhật...
Tìm kiếm:
Hồi quy tuyến tính (Linear Regression) là một kỹ thuật học máy (machine learning) cơ bản được sử dụng để dự đoán giá trị của một biến phụ thuộc (dependent variable) dựa trên một hoặc nhiều biến độc lập (independent variables).