Dự đoán trên tập kiểm tra: Sử dụng mô hình đã được huấn luyện để dự đoán giá trị của biến mục tiêu y_test trên tập kiểm tra X_test và lưu vào 1 biến u_pred.. Yêu cầu 2b: Tìm ra đặc trưng
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
TOÁN ỨNG DỤNG VÀ THỐNG KÊ CHO CÔNG NGHỆ THÔNG TIN
|GIÁO VIÊN HƯỚNG DẪN|
GV Phan Thị Phương Uyên
GV Vũ Quốc Hoàng
GV Nguyễn Văn Quang Huy
GV Nguyễn Ngọc Toàn
TRẦN LÊ BẢO DUY | 22127089 | 22CLC03
PROJECT 3: LINEAR REGRESSION
Trang 2Mục lục
Tổng quan 3
Giới thiệu 3
Thông tin thành viên 3
Danh mục công việc 3
Thư viện sử dụng: 4
Mô tả các hàm 4
Yêu cầu 1: 4
Yêu cầu 2a: 5
Yêu cầu 2b: 5
Yêu cầu 2c: 7
Phân tích khám phá dữ liệu 9
Yêu cầu 1: 9
Yêu cầu 2a: 14
Yêu cầu 2b: 15
Yêu cầu 2c: 16
Các nguồn dữ liệu 17
Trang 3Tổng quan
Giới thiệu
Trong đồ án cá nhân lần này, sinh viên được yêu cầu tìm hiểu các yếu tố ảnh hưởng đến thành tích học tập của sinh viên (Academic Student Performance Index) Các yếu tố ảnh hưởng có thể là số giờ học tập/nghiên cứu, hoạt động ngoại khóa, số giờ ngủ, số bài kiểm tra mẫu đã luyện tập Quy mô: Cá nhân
Ngôn ngữ: Python
Thông tin thành viên
Tên: Trần Lê Bảo Duy
Mã số Sinh Viên: 22127089
Email: tlbduy22@clc.fitus.edu.vn
Danh mục công việc
2a Huấn luyện 1 lần duy nhất cho 5 đặc trưng trên cho toàn
bộ tập huấn luyện (`train.csv`)
100%
Thể hiện công thức cho mô hình hồi quy (tính y(Student Performance) theo 5 đặc trưng
100%
Báo cáo 1 kết quả trên tập kiểm tra (test.csv) cho mô hình vừa huấn luyện được
100%
2b Thử nghiệm trên toàn bộ (5) đặc trưng đề bài cung cấp 100%
Sử dụng k-fold Cross Validation (tối thiểu k=5) để tìm ra đặc trưng tốt nhất
100%
Báo cáo 5 kết quả tương ứng cho 5 mô hình từ k-fold Cross Validation (lấy trung bình)
100%
2c Xây dựng m mô hình khác nhau (tối thiểu 3), đồng thời
khác mô hình ở 2a và 2b
100%
Tìm ra mô hình tốt nhất trong m mô hình mà sinh viên xây dựng/thiết kế
100%
Thể hiện công thức cho mô hình hồi quy tốt nhất mà sinh viên tìm được
100%
Bảng 1: Bảng danh mục các công việc
Trang 4Thư viện sử dụng:
1 Pandas: Thư viện mạnh mẽ để xử lý và phân tích dữ liệu trong Python Nó cung cấp các cấu trúc
dữ liệu như DataFrame giúp làm việc với dữ liệu có cấu trúc hoặc dữ liệu dạng bảng dễ dàng [1] Trong đồ án này, thư viện Pandas chủ yếu được sử dụng để:
- Đọc dữ liệu từ các tệp mẫu để huấn luyện và kiểm tra mô hình
- Chuyển đổi kiểu dữ liệu cho phù hợp với mô hình- trong đây chuyển Extracurricular Activities từ Boolean về dạng số nguyên cho phù hợp
- Lọc và chọn các cột cụ thể từ DataFrame để tạo ra các ma trận đặc trưng
- Tạo bảng kể quả để dễ dàng phân tích các chỉ số tương ứng với từng đặc trưng
2 Scikit-learn: Thư viện phổ biến cho học máy trong Python Nó cung cấp các công cụ để xây dựng
và đánh giá các mô hình học máy, như Linear Regression (hồi quy tuyến tính), cùng với các công cụ khác như KFold (gập chéo K lần) và cross_val_score (điểm số với kiểm định chéo) [2]
3 Numpy: Thư viện đã được sử dụng ở cả trong đồ án 1 và 2 Numpy cung cấp khả năng làm việc với mảng đa chiều (ndarray) và các hàm toán học [3]
4 Seaborn: Thư viện trực quan hóa dữ liệu Có khả năng vẽ biểu đồ thống kê dựa trên Matplotlib Seaborn dễ sử dụng và phù hợp khi cần tạo các biểu đồ thống kê phức tạp, phù hợp với số lượng thuộc tính nhiều như trong đồ án này [4]
5 Matplotlib: Thư viện cơ bản để vẽ biểu đồ trong Python Nó cung cấp các công cụ để tạo các loại biểu đồ khác nhau, từ biểu đồ đơn giản đến phức tạp [5]
6 PolynomialFeatures (Scikit-learn): Thuộc sklearn.preprocessing Công cụ để tạo ra các đặc trưng đa thức từ dữ liệu gốc, tạo ra ma trận tính năng mới bao gồm tất cả các tổ hợp đa thức của các tính năng có bậc nhỏ hơn hoặc bằng bậc đã chỉ định [6]
7 Mean Absolute Error (MAE): Một trong các chỉ số để đánh giá độ chính xác của mô hình học máy bằng cách tính trung bình của độ lệch tuyệt đối giữa giá trị dự đoán và giá trị thực tế [7]
Mô tả các hàm
Yêu cầu 1:
1 Kiểm tra kích thước dữ liệu: In số lượng mẫu và đặc trưng của tập huấn luyện và kiểm tra.
2 Thông tin tổng quan: info() hiển thị cấu trúc dữ liệu, bao gồm số lượng cột, kiểu dữ liệu, và giá
trị không null
3 Kiểm tra giá trị thiếu: isnull().sum() đếm số lượng giá trị thiếu trong mỗi cột.
Trang 54 Biểu đồ hộp (Box plot): Phát hiện giá trị ngoại lai trong các đặc trưng của tập huấn luyện.
5 Biểu đồ thanh (Bar plot): Hiển thị ảnh hưởng của hoạt động ngoại khóa đến chỉ số hiệu suất.
6 Biểu đồ phân tán (Scatter plot): Thể hiện mối quan hệ giữa số giờ học và chỉ số hiệu suất.
6 Biểu đồ nhiệt (Heatmap): Hiển thị mối tương quan giữa các đặc trưng trong tập huấn luyện.
Yêu cầu 2a:
1 Khởi tạo mô hình hồi quy tuyến tính: tạo đối tượng hồi quy tuyến tính bằng hàm
LinearRegression() từ thư viện scikit-learn
2 Huấn luyện mô hình trên tập huấn luyện: huấn luyện mô hình bằng hàm fit(): thực hiện tính
toán tối ưu hóa các tham số θ0 và θ1, phương thức này trả về một model
(Intercept): Đây là giá trị chặn của mô hình hồi quy tuyến tính, hay còn gọi θ0
(Coefficient): Đây là hệ số của các đặc trưng (features) trong mô hình, hay còn gọi là θ.
Sau khi tìm được Intercept và Coeficient từ đối tượng, ta dựng được công thức hồi quy tuyến tính: Y= θ0+ θ1x1+ θ2x2+ θ3x3+ θ4x4+ θ5x5
3 Dự đoán trên tập kiểm tra:
Sử dụng mô hình đã được huấn luyện để dự đoán giá trị của biến mục tiêu (y_test) trên tập kiểm tra (X_test) và lưu vào 1 biến u_pred
4 Tính toán Mean Absolute Error (MAE):
Hàm mean_absolute_error được sử dụng để tính MAE, là trung bình của giá trị tuyệt đối của sai số giữa giá trị thực (y_test) và giá trị dự đoán (y_pred) MAE cung cấp một cách đo lường tổng quát về
độ chính xác của mô hình, thể hiện bằng đơn vị giống như biến mục tiêu
Yêu cầu 2b:
Tìm ra đặc trưng tốt nhất cho mô hình hồi quy tuyến tính đơn giản nhằm dự đoán "Performance Index" của sinh viên dựa trên các yếu tố khác nhau như số giờ học, điểm trước đó, hoạt động ngoại khóa, số giờ ngủ, và số lượng đề mẫu đã luyện tập:
1 Đọc dữ liệu từ các tệp CSV:
Sử dụng `pd.read_csv()` để đọc dữ liệu huấn luyện từ tệp `train.csv` và dữ liệu kiểm tra từ tệp
`test.csv`
2 Chuẩn bị dữ liệu:
Đảm bảo rằng đặc trưng "Extracurricular Activities" là kiểu số nguyên Nếu không phải là số nguyên, ta chuyển đổi cột này thành kiểu số bằng cách sử dụng astype(int)
Trang 6Xác định các tập dữ liệu huấn luyện X_train, y_train và kiểm tra X_test, y_test Các đặc trưng được chọn là các cột trong bảng dữ liệu, và biến mục tiêu là "Performance Index"
3 Thiết lập danh sách các đặc trưng và biến results để lưu trữ kết quả:
Danh sách các đặc trưng features được xác định trước để dễ dàng lặp qua và thử nghiệm
4 Sử dụng KFold với shuffle=True:
Tạo đối tượng KFold để chia dữ liệu thành 5 phần (n_splits=5) và xáo trộn dữ liệu trước khi trộn (shuffle=True)
5 Thử nghiệm từng đặc trưng:
Với mỗi đặc trưng trong danh sách, một mô hình hồi quy tuyến tính LinearRegression được huấn luyện trên đặc trưng đó
Đoạn code sử dụng cross_val_score với phương pháp KFold để tính điểm MAE (Mean Absolute Error) thông qua cross-validation và sau đó lưu trữ giá trị MAE trung bình cho mỗi đặc trưng vào biến results
6 Tạo bảng kết quả:
Kết quả được lưu trữ trong DataFrame result_df, với cột "Feature" là tên của đặc trưng và cột
"MAE" là giá trị MAE trung bình đã được làm tròn
7 Chọn đặc trưng tốt nhất:
Đặc trưng có MAE nhỏ nhất được chọn là đặc trưng tốt nhất best_feature Đặc trưng này được in ra màn hình
8 Huấn luyện mô hình với đặc trưng tốt nhất và dự đoán trên tập kiểm tra:
Mô hình hồi quy tuyến tính được huấn luyện với đặc trưng tốt nhất, sau đó sử dụng mô hình này để
dự đoán giá trị "Performance Index" trên tập kiểm tra y_pred
MAE trên tập kiểm tra được tính và in ra
9 Công thức hồi quy tuyến tính với đặc trưng tốt nhất:
Hệ số chặn θ0 và hệ số góc θcủa mô hình được tính và in ra, cùng với công thức hồi quy tuyến tính tổng quát
10 Huấn luyện lại mô hình với đặc trưng tốt nhất:
Tạo một mô hình hồi quy tuyến tính mới best_model
Huấn luyện mô hình này trên toàn bộ tập huấn luyện X_train chỉ với đặc trưng tốt nhất best_feature, tức là cột có tên của đặc trưng tốt nhất
Trang 711 Dự đoán trên tập kiểm tra:
Sử dụng mô hình vừa được huấn luyện để dự đoán giá trị "Performance Index" cho các mẫu trong tập kiểm tra X_test Kết quả dự đoán được lưu trong y_pred
12 Tính toán MAE trên tập kiểm tra:
Tính toán độ lỗi trung bình tuyệt đối (MAE) giữa giá trị thực y_test và giá trị dự đoán y_pred trên tập kiểm tra Kết quả MAE này cho biết mức độ sai số của mô hình khi dự đoán trên dữ liệu kiểm tra
13 Công thức hồi quy tuyến tính với đặc trưng tốt nhất:
Lấy hệ số chặn θ0 và hệ số góc θcủa mô hình
In ra công thức hồi quy tuyến tính dưới dạng y = θ0+ θ * best_feature, trong đó best_feature là tên của đặc trưng tốt nhất
Yêu cầu 2c:
Thiết kế ba mô hình hồi quy tuyến tính khác nhau để dự đoán "Performance Index" của sinh viên:
1 Giải thích mô hình:
Mô hình 1: Sử dụng hai đặc trưng "Hours Studied" và "Previous Scores" đã được chuẩn hóa.
Chuẩn hóa giúp đưa các đặc trưng về cùng một thang đo để mô hình không bị lệch bởi các giá trị có đơn vị khác nhau
Mô hình 2: Sử dụng bình phương của đặc trưng "Hours Studied" Điều này có thể giúp mô hình
nắm bắt được mối quan hệ phi tuyến tính giữa số giờ học và "Performance Index"
Mô hình 3: Sử dụng sản phẩm giữa hai đặc trưng "Previous Scores" và "Sample Question Papers
Practiced" Sản phẩm này có thể cho thấy sự tương tác giữa việc học và luyện tập đề mẫu
Tìm ra mô hình tốt nhất dựa trên MAE (Mean Absolute Error) thông qua k-fold Cross Validation (k=5) Đây là phần tiếp theo trong quá trình thiết kế và đánh giá các mô hình đã được trình bày trước đó:
2 Sử dụng k-fold Cross Validation để đánh giá các mô hình:
Đối với mỗi mô hình trong danh sách models, đoạn code sử dụng hàm cross_val_score để tính toán MAE thông qua cross-validation với 5 lần gập (k=5)
Điểm số MAE được tính bằng cách sử dụng tham số scoring='neg_mean_absolute_error' trong hàm cross_val_score, sau đó lấy giá trị trung bình của tất cả các lần gập
MAE của từng mô hình được lưu trữ trong dictionary `results` với mô tả của mô hình làm khóa
Trang 83 Báo cáo kết quả:
Đoạn code in ra kết quả MAE cho từng mô hình, giúp dễ dàng so sánh hiệu suất của chúng
4 Chọn mô hình có MAE thấp nhất:
Sử dụng hàm min để tìm mô hình có MAE nhỏ nhất, tức là mô hình dự đoán chính xác nhất theo tiêu chí MAE
Mô hình tốt nhất được in ra màn hình với mô tả của nó
5 Lấy mô tả và mô hình tốt nhất:
Dựa trên kết quả từ phần trước, mô hình tốt nhất (best_model_desc) đã được xác định
Đoạn code sử dụng list comprehension để tìm và gán mô tả, mô hình, và tập dữ liệu tương ứng với
mô hình tốt nhất từ danh sách models Kết quả được gán vào các biến my_best_model_desc, my_best_model, và X_train_best_feature
6 Huấn luyện lại mô hình tốt nhất:
Sau khi đã xác định được mô hình tốt nhất và tập dữ liệu đặc trưng tương ứng, đoạn code tiếp tục huấn luyện lại mô hình này trên toàn bộ tập huấn luyện (X_train_best_feature, y_train)
Điều này đảm bảo rằng mô hình được huấn luyện trên toàn bộ dữ liệu trước khi được sử dụng để dự đoán hoặc kiểm tra
Chuẩn bị đặc trưng tương ứng trên tập kiểm tra:
Dựa trên mô hình tốt nhất (best_model_desc), đoạn code kiểm tra xem mô hình sử dụng đặc trưng nào và chuẩn bị dữ liệu tương ứng trên tập kiểm tra (X_test_best_feature):
o Mô hình 1: Nếu mô hình tốt nhất là "Mô hình 1" (sử dụng 2 đặc trưng đã chuẩn
hóa), dữ liệu kiểm tra cũng cần được chuẩn hóa bằng bộ chuẩn hóa scaler
o Mô hình 2: Nếu mô hình tốt nhất là "Mô hình 2" (sử dụng bình phương của đặc
trưng "Hours Studied"), dữ liệu kiểm tra cần được tính bình phương
o Mô hình 3: Nếu mô hình tốt nhất là "Mô hình 3" (sử dụng sản phẩm giữa "Previous
Scores" và "Sample Question Papers Practiced"), dữ liệu kiểm tra cần được tính toán sản phẩm của hai đặc trưng này
Dự đoán trên tập kiểm tra:
Sau khi đã chuẩn bị xong đặc trưng tương ứng, đoạn code sử dụng mô hình tốt nhất (my_best_model) để dự đoán giá trị mục tiêu (y_pred_test) trên tập kiểm tra (X_test_best_feature)
Tính toán MAE trên tập kiểm tra:
Trang 9MAE được tính toán giữa giá trị thực (y_test) và giá trị dự đoán (y_pred_test), để đánh giá độ chính xác của mô hình tốt nhất trên tập kiểm tra
Kết quả MAE được in ra để hiển thị hiệu suất của mô hình
Phân tích khám phá dữ liệu
Yêu cầu 1:
Hình 1: Biểu đồ hộp
Trang 10Phân Tích biểu đồ hộp:
Hours Studied, Extracurricular Activities, Sleep Hours, Sample Question Papers Practiced:
o Các đặc trưng này có giá trị nhỏ hơn rất nhiều so với Previous Scores Điều này làm
cho các hộp của chúng trông nhỏ và gần sát nhau ở phía dưới biểu đồ
o Các hộp đều có khoảng cách hẹp, cho thấy sự phân bố của dữ liệu trong những đặc trưng này tương đối tập trung, không có nhiều biến động
o Không có giá trị ngoại lai (outliers) trong các đặc trưng này
Previous Scores:
o Đây là đặc trưng có giá trị lớn hơn nhiều so với các đặc trưng khác, với các giá trị chủ yếu nằm trong khoảng từ 40 đến 100
o Hộp của Previous Scores chiếm phần lớn diện tích trên biểu đồ, cho thấy sự biến
động lớn trong giá trị của đặc trưng này
o Không có giá trị ngoại lai (outliers) nào xuất hiện
Kết Luận:
Previous Scores có độ biến động lớn hơn so với các đặc trưng khác và chiếm ưu thế trên
biểu đồ
Các đặc trưng khác có giá trị nhỏ và phân bố tương đối tập trung, không có ngoại lai rõ rệt
Trang 11Hình 2: biểu đồ cột.
Nhận Xét biểu đồ cột:
1 Phân bố dữ liệu:
o Dữ liệu được phân bố thành 2 cột ứng với việc tham gia và không tham gia hoạt động ngoại khóa
o Trục dọc thể hiện Performance Index của từng cột
2 Xu hướng:
o Chỉ số thành tích (Performance Index) trung bình giữa hai nhóm có tham gia và
không tham gia hoạt động ngoại khóa gần như tương đương nhau
o Sự khác biệt về chỉ số thành tích giữa hai nhóm là rất nhỏ, cho thấy rằng việc tham gia hoạt động ngoại khóa có thể không có tác động đáng kể đến chỉ số thành tích của học sinh.Có thể có các yếu tố khác (chẳng hạn như các hoạt động ngoại khóa, giấc ngủ, hoặc các yếu tố cá nhân khác) ảnh hưởng đến chỉ số hiệu suất ngoài số giờ học
Kết Luận:
Trang 12Hoạt động ngoại khóa (Extracurricular Activities) không có ảnh hưởng rõ rệt đến Chỉ số thành tích (Performance Index) của học sinh Điều này có thể ám chỉ rằng yếu tố này không phải là một
biến quan trọng trong việc dự đoán thành tích học tập của học sinh
Hình 3: Biểu đồ phân tán
Nhận Xét biểu đồ phân tán:
3 Phân bố dữ liệu:
o Dữ liệu được phân bố thành các cột dọc tương ứng với các giá trị khác nhau của
Hours Studied.
o Mỗi cột dọc biểu diễn chỉ số hiệu suất của các học sinh có cùng số giờ học, nhưng hiệu suất lại trải rộng từ thấp đến cao (20 đến 100)
4 Xu hướng:
o Biểu đồ cho thấy rằng số giờ học không có mối quan hệ tuyến tính rõ ràng với chỉ số hiệu suất Các giá trị chỉ số hiệu suất gần như phân bố đều trong các cột, cho thấy rằng dù học sinh có học bao nhiêu giờ, thì hiệu suất của họ vẫn có thể dao động lớn
o Có thể có các yếu tố khác (chẳng hạn như các hoạt động ngoại khóa, giấc ngủ, hoặc các yếu tố cá nhân khác) ảnh hưởng đến chỉ số hiệu suất ngoài số giờ học