Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Dự đoán điểm số học sinh dựa trên thời gian học
Hướng Dẫn Đồ ÁnLập Trình AI

Dự đoán điểm số học sinh dựa trên thời gian học

Chia sẻ
Chia sẻ

Việc dự đoán kết quả học tập của học sinh luôn là một vấn đề quan trọng trong giáo dục. Nó không chỉ giúp giáo viên đánh giá hiệu quả học tập mà còn giúp học sinh có kế hoạch học tập tốt hơn. Trong thời đại dữ liệu, Machine Learning mang lại khả năng phân tích và dự đoán chính xác dựa trên các yếu tố như thời gian học, phương pháp học và các yếu tố khác.

Trong bài viết này, chúng ta sẽ tập trung vào một yếu tố chính – thời gian học – để dự đoán điểm số của học sinh. Đây là một ví dụ đơn giản nhưng rất thực tiễn để người mới học hiểu cách xây dựng mô hình Linear Regression trong Python và áp dụng vào dữ liệu thực tế.

Mô tả bài toán

Bài toán đặt ra là: dự đoán điểm số của học sinh dựa trên số giờ học mỗi ngày. Chúng ta sẽ sử dụng một bộ dữ liệu mẫu gồm hai cột: Hours (số giờ học) và Scores (điểm số đạt được).

Mục tiêu là xây dựng một mô hình Linear Regression để tìm ra mối quan hệ tuyến tính giữa số giờ học và điểm số. Sau đó, sử dụng mô hình này để dự đoán điểm số cho một số giờ học bất kỳ do người dùng nhập vào.

Cài đặt thư viện cần thiết

Trước khi xử lý dữ liệu và xây dựng mô hình, chúng ta cần cài đặt các thư viện hỗ trợ như Pandas (xử lý dữ liệu), Matplotlib (vẽ đồ thị), scikit-learn (machine learning).

Cài đặt các thư viện bằng pip:

pip install pandas matplotlib scikit-learn

Import các thư viện vào dự án:

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

Tải và khám phá dữ liệu

Trước khi huấn luyện mô hình, cần hiểu dữ liệu: số dòng, kiểu dữ liệu, giá trị thiếu, và mối quan hệ giữa các biến.

Tải dữ liệu từ GitHub:
📥 Download student_scores.csv

# Đọc dữ liệu
url = "https://raw.githubusercontent.com/AdiPersonalWorks/Random/master/student_scores%20-%20student_scores.csv"
data = pd.read_csv(url)

# Hiển thị 5 dòng đầu tiên
print(data.head())

# Thống kê dữ liệu
print(data.describe())

Trực quan hóa dữ liệu

Trực quan hóa giúp hiểu mối quan hệ giữa số giờ học và điểm số. Nếu mối quan hệ gần tuyến tính, Linear Regression là lựa chọn hợp lý.

Vẽ biểu đồ phân tán giữa số giờ học và điểm số:

plt.scatter(data['Hours'], data['Scores'], color='blue')
plt.title('Số giờ học vs Điểm số')
plt.xlabel('Số giờ học')
plt.ylabel('Điểm số')
plt.show()

Chuẩn bị dữ liệu để huấn luyện

Trước khi đưa dữ liệu vào mô hình, cần tách dữ liệu thành tập huấn luyện và tập kiểm tra để đánh giá hiệu quả mô hình.

Chia dữ liệu: 80% huấn luyện, 20% kiểm tra.

X = data[['Hours']]  # Biến độc lập
y = data['Scores']   # Biến phụ thuộc

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Xây dựng mô hình Linear Regression

Linear Regression là thuật toán đơn giản, phù hợp để dự đoán khi mối quan hệ giữa biến đầu vào và đầu ra là tuyến tính.

Huấn luyện mô hình với dữ liệu:

# Khởi tạo và huấn luyện mô hình
model = LinearRegression()
model.fit(X_train, y_train)

# In hệ số
print("Hệ số (slope):", model.coef_[0])
print("Hệ số chặn (intercept):", model.intercept_)

Đánh giá mô hình

Đánh giá giúp kiểm tra độ chính xác và khả năng tổng quát của mô hình trên dữ liệu chưa từng thấy.

Dự đoán trên tập kiểm tra và tính RMSE, R² score:

y_pred = model.predict(X_test)

# Đánh giá
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("MSE:", mse)
print("R² Score:", r2)

Vẽ đường hồi quy:

plt.scatter(X_test, y_test, color='blue')
plt.plot(X_test, y_pred, color='red')
plt.title('Đường hồi quy: Số giờ học vs Điểm số')
plt.xlabel('Số giờ học')
plt.ylabel('Điểm số')
plt.show()

Dự đoán điểm số cho dữ liệu mới

Ứng dụng thực tế yêu cầu mô hình dự đoán được kết quả cho dữ liệu mới mà nó chưa từng thấy.

Nhập số giờ học và dự đoán điểm số:

hours = [[7.5]]
predicted_score = model.predict(hours)
print(f"Dự đoán điểm số cho {hours[0][0]} giờ học là: {predicted_score[0]:.2f}")

Kết luận

Qua bài viết này, bạn đã học cách xây dựng một mô hình Linear Regression đơn giản để dự đoán điểm số dựa trên số giờ học. Dù chỉ với một biến đầu vào, mô hình đã cho thấy khả năng dự đoán khá tốt. Đây là bước đệm để bạn áp dụng các thuật toán phức tạp hơn trên dữ liệu đa chiều.

Tiếp theo, bạn có thể triển khai mô hình này thành API bằng FastAPI (Chuyển mô hình học máy sang ứng dụng thực tế bằng FastAPI) hoặc thử nghiệm với dữ liệu lớn hơn (Làm sạch dữ liệu lớn trước khi phân tích).

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!