Download Linear-Regression-Case.py from TinTinDo/Data-Science-Tutorial: direct link, hf CLI and curl.
- Browser
- Download file 5.24 kB
-
https://huggingface.co/TinTinDo/Data-Science-Tutorial/resolve/main/Linear-Regression-Case.py
- Command line
-
hf download hf://TinTinDo/Data-Science-Tutorial/Linear-Regression-Case.py
-
curl -L -o Linear-Regression-Case.py https://huggingface.co/TinTinDo/Data-Science-Tutorial/resolve/main/Linear-Regression-Case.py
5.24 kB
| # Trường hợp: Sử dụng Thời lượng + Nhịp tim trung bình để Dự đoán Lượng calo bị đốt cháy | |
| # - Tạo bảng hồi quy tuyến tính với Average_Pulse và Duration làm biến giải thích. | |
| # Ví dụ: | |
| import pandas as pd | |
| import statsmodels.formula.api as smf | |
| full_health_data = pd.read_csv('data.csv', header=0, sep=',') | |
| model = smf.ols('Calorie_Burnage ~ Average_Pulse + Duration', data=full_health_data) # Giải thích: dấu ~ nghĩa là dấu bằng(=) | |
| ''' | |
| Giải thích: ols là Ordinary Least Squares(phương pháp bình phương tối thiểu) | |
| 👉Nghĩa là ta muốn tìm đường thẳng tốt nhất: Calorie_Burnage = a + b * Average_Pulse | |
| trong đó: | |
| a: hằng số (intercept) | |
| b: hệ số góc (slope) | |
| ''' | |
| results = model.fit() | |
| print(results.summary()) | |
| ''' | |
| In ra bảng thống kê kết quả hồi quy tuyến tính, gồm: | |
| coef: hệ số của từng biến. | |
| std err: sai số chuẩn. | |
| t, P>|t|: giá trị kiểm định thống kê. | |
| R-squared: độ phù hợp của mô hình (giá trị càng gần 1 càng tốt). | |
| F-statistic, Prob(F-statistic): độ tin cậy chung của mô hình. | |
| Intercept: hệ số chặn 𝑎. | |
| Average_Pulse: hệ số góc b. | |
| ''' | |
| ''' | |
| Giải thích ví dụ: | |
| Nhập thư viện statsmodels.formula.api dưới dạng smf. Statsmodels là một thư viện thống kê trong Python. | |
| Sử dụng bộ dữ liệu full_health_data. | |
| Tạo mô hình dựa trên phương pháp Bình phương tối thiểu thông thường với smf.ols(). Lưu ý rằng biến giải thích phải được viết trước trong dấu ngoặc đơn. Sử dụng tập dữ liệu full_health_data. | |
| Bằng cách gọi .fit(), bạn sẽ nhận được biến results. Biến này chứa rất nhiều thông tin về mô hình hồi quy. | |
| Gọi summary() để lấy bảng kết quả hồi quy tuyến tính. | |
| ''' | |
| ''' | |
| +) Hàm hồi quy tuyến tính có thể được viết lại theo phương pháp toán học như sau: | |
| Calorie_Burnage = Average_Pulse * 3.1695 + Duration * 5.8424 - 334.5194 | |
| +) Làm tròn đến hai chữ số thập phân: | |
| Calorie_Burnage = Average_Pulse * 3.17 + Duration * 5.84 - 334.52 | |
| ''' | |
| # Định nghĩa hàm hồi quy tuyến tính trong Python | |
| ''' | |
| Xác định hàm hồi quy tuyến tính trong Python để thực hiện dự đoán. | |
| Calorie_Burnage là gì nếu: | |
| Nhịp tim trung bình là 110 và thời gian tập luyện là 60 phút? | |
| Nhịp tim trung bình là 140 và thời gian tập luyện là 45 phút? | |
| Nhịp tim trung bình là 175 và thời gian tập luyện là 20 phút? | |
| ''' | |
| # Ví dụ: | |
| def Predict_Calorie_Burnage(Average_Pulse, Duration): | |
| return(Average_Pulse * 3.165 + Duration * 5.8424 - 334.5194) # Công thức y = w1x1 + w2x2 + ...+ wnxn - b | |
| print(Predict_Calorie_Burnage(110, 60)) | |
| print(Predict_Calorie_Burnage(140, 45)) | |
| print(Predict_Calorie_Burnage(175, 20)) | |
| ''' | |
| Câu trả lời: | |
| Nhịp tim trung bình là 110 và thời lượng luyện tập là 60 phút = 364 Calo | |
| Nhịp tim trung bình là 140 và thời lượng luyện tập là 45 phút = 371 Calo | |
| Nhịp tim trung bình là 175 và thời lượng luyện tập là 20 phút = 336 Calo | |
| ''' | |
| # Truy cập các hệ số | |
| ''' | |
| Hãy xem các hệ số: | |
| Calorie_Burnage tăng lên 3,17 nếu Average_Pulse tăng thêm một. | |
| Calorie_Burnage tăng 5,84 nếu Duration tăng thêm một. | |
| ''' | |
| # Truy cập Giá trị P (P-Valued) | |
| ''' | |
| Hãy xem giá trị P cho từng hệ số. | |
| Giá trị P là 0,00 đối với Average_Pulse, Duration và Intercept. | |
| Giá trị P có ý nghĩa thống kê đối với tất cả các biến vì nó nhỏ hơn 0,05. | |
| Vì vậy, ở đây chúng ta có thể kết luận rằng Average_Pulse và Duration có mối quan hệ với Calorie_Burnage. | |
| ''' | |
| # R-Squared đã điều chỉnh | |
| ''' | |
| Sẽ có vấn đề với R bình phương nếu chúng ta có nhiều hơn một biến giải thích. | |
| R bình phương gần như luôn tăng nếu chúng ta thêm nhiều biến hơn và sẽ không bao giờ giảm. | |
| Điều này là do chúng ta đang thêm nhiều điểm dữ liệu hơn xung quanh hàm hồi quy tuyến tính. | |
| Nếu chúng ta thêm các biến ngẫu nhiên không ảnh hưởng đến lượng Calorie_Burnage, chúng ta có nguy cơ kết luận sai rằng hàm hồi quy tuyến tính là phù hợp. R-bình phương hiệu chỉnh sẽ điều chỉnh cho vấn đề này. | |
| Do đó, tốt hơn là nên xem xét giá trị R bình phương đã điều chỉnh nếu chúng ta có nhiều hơn một biến giải thích. | |
| R bình phương đã điều chỉnh là 0,814. | |
| Giá trị của R-Squared luôn nằm trong khoảng từ 0 đến 1 (0% đến 100%). | |
| Giá trị R-Squared cao có nghĩa là nhiều điểm dữ liệu gần với đường hồi quy tuyến tính. | |
| Giá trị R-Squared thấp có nghĩa là đường hồi quy tuyến tính không phù hợp với dữ liệu. | |
| 🗸 Kết luận: Mô hình phù hợp với điểm dữ liệu!✅ | |
| ✅Xin chúc mừng! Bạn đã hoàn thành mô-đun cuối cùng của thư viện khoa học dữ liệu!🎉🎉🎉 | |
| ''' |