Việc dự đoán điểm thi học sinh, sinh viên đang trở thành một xu hướng ứng dụng Machine Learning trong giáo dục nhằm nâng cao chất lượng giảng dạy và hỗ trợ học tập cá nhân hóa. Với khả năng xử lý dữ liệu lớn và tìm ra các quy luật ẩn, Machine Learning giúp xây dựng mô hình dự đoán chính xác điểm số dựa trên các yếu tố đầu vào như điểm các bài kiểm tra giữa kỳ, điểm chuyên cần, thái độ học tập… Bài viết này sẽ hướng dẫn bạn từng bước xây dựng một mô hình dự đoán điểm thi sử dụng các thuật toán Machine Learning phổ biến, cùng với ví dụ code minh họa bằng Python.
Chuẩn bị môi trường lập trình và thư viện cần thiết
Google Colab là một lựa chọn tuyệt vời cho người mới vì bạn chỉ cần trình duyệt và tài khoản Google. Truy cập https://colab.research.google.com và chọn “New Notebook” để bắt đầu. Nếu bạn quen với Jupyter Notebook trên máy tính, bạn có thể thực hiện các bước tương tự trong đó.
Các thư viện cần thiết bao gồm: pandas, numpy, matplotlib, seaborn và scikit-learn. Trên Google Colab, hầu hết đã được cài sẵn. Nếu dùng Jupyter Notebook, bạn có thể cài bằng lệnh sau:
!pip install pandas numpy matplotlib seaborn scikit-learn
Giới thiệu bài toán và tập dữ liệu
Bài toán đặt ra là dự đoán điểm thi cuối kỳ của học sinh dựa trên các yếu tố đầu vào như số giờ học mỗi tuần, tỉ lệ điểm danh, mức độ hoàn thành bài tập về nhà và điểm kiểm tra giữa kỳ. Đây là một bài toán hồi quy điển hình, nơi chúng ta dự đoán một giá trị liên tục.
Để thực hành, bạn có thể sử dụng bộ dữ liệu Student Performance Data Set từ UCI Machine Learning Repository. Bộ dữ liệu này chứa thông tin học tập của học sinh Bồ Đào Nha, rất phù hợp cho bài toán.
Truy cập https://archive.ics.uci.edu/ml/datasets/Student+Performance, tải về file student.zip, giải nén và lấy file student-mat.csv. Trong Google Colab, nhấn vào biểu tượng thư mục ở thanh bên trái, chọn “Upload” và tải file CSV này lên để sử dụng.
Nạp và tạo dữ liệu
Sau khi đã có file dữ liệu, chúng ta tiến hành đọc dữ liệu vào DataFrame bằng Pandas.
import pandas as pd
# Đọc dữ liệu từ file CSV
data = pd.read_csv('student-mat.csv')
# Xem trước 5 dòng đầu tiên
data.head()
Nếu bạn muốn tạo dữ liệu giả để thử nghiệm nhanh, có thể sử dụng đoạn mã sau. Dữ liệu giả này gồm các cột tương tự như dữ liệu thật:

