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 Tạo dự đoán số lượng khách đến quán cafe bằng ML
Hướng Dẫn Đồ ÁnLập Trình AI

Tạo dự đoán số lượng khách đến quán cafe bằng ML

Chia sẻ
Chia sẻ

Dự đoán số lượng khách đến quán không chỉ giúp chủ quán chuẩn bị nguyên liệu, điều chỉnh lịch phục vụ mà còn có thể giảm lãng phí và tối ưu chi phí vận hành. Thay vì ước lượng dựa vào cảm tính, Machine Learning cung cấp một công cụ mạnh mẽ để khai thác dữ liệu lịch sử và dự báo chính xác hơn. Khi có dự báo tin cậy, quán có thể xử lý nhân sự linh hoạt, đảm bảo phục vụ đầy đủ những ngày đông khách và không tốn chi phí dư thừa trong ngày vắng.

Trong bài viết này, chúng ta sẽ dùng mô hình Machine Learning (Random Forest Regressor) để dự đoán số lượng khách mỗi ngày đến quán. Bài viết dành cho người mới và trình bày rõ từng bước. Trước mỗi đoạn code đều có phần giải thích bằng hai đoạn văn, giúp bạn hiểu kỹ thuật lẫn mục đích của từng bước.

Dataset sử dụng

Chúng ta sẽ dùng dataset Coffee Shop Daily Revenue Prediction Dataset trên Kaggle – chứa khoảng 2.000 ngày dữ liệu về doanh thu, số lượng khách, thời tiết và các ngày lễ liên quan. Đây là bộ dữ liệu đầy đủ yếu tố ảnh hưởng đến lượng khách và rất phù hợp để thực hiện bài toán dự báo.

Bạn có thể tải dữ liệu tại: Coffee Shop Daily Revenue Prediction Dataset – Kaggle bên dưới đây:

Link tải: https://www.kaggle.com/datasets/himelsarder/coffee-shop-daily-revenue-prediction-dataset

Dữ liệu này cung cấp các cột như date (ngày), customers (số khách), temperature, rainfall, holiday (Yes/No), giúp chúng ta có đầy đủ thông tin để huấn luyện mô hình.

Nạp và khám phá dữ liệu

Trước khi xử lý, chúng ta cần đọc dữ liệu vào Python và xem cấu trúc, kích thước cũng như chất lượng của nó. Khám phá dữ liệu (EDA) giúp phát hiện giá trị thiếu, kiểm tra phân phối biến và hiểu mối quan hệ giữa các yếu tố – rất quan trọng để quyết định các bước chuẩn hóa và xây dựng mô hình.

Ngoài ra, vẽ đồ thị số khách theo thời gian sẽ giúp chúng ta nhận thấy các xu hướng dài hạn, biến động theo mùa hoặc theo ngày lễ – thông tin này gợi ý về cách chọn đặc trưng phù hợp cho mô hình.

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('Coffee_Shop_Daily_Revenue.csv', parse_dates=['date'])
print(data.head())
print(data.info())
print(data.describe())

plt.figure(figsize=(12,6))
plt.plot(data['date'], data['customers'], label='Number of Customers')
plt.title('Daily Customers Over Time')
plt.xlabel('Date')
plt.ylabel('Customers')
plt.legend()
plt.show()

Tiền xử lý và tạo đặc trưng

Dữ liệu thô thường chứa các cột không trực tiếp sử dụng và cần chuẩn hóa. Chẳng hạn, chúng ta nên chuyển holiday thành giá trị 0/1 để mô hình hiểu được; thêm day_of_weekmonth giúp mô hình nhận biết các xu hướng theo tuần hoặc theo mùa.

Ngoài ra, chia dữ liệu thành hai phần train và test rất quan trọng để đánh giá chất lượng mô hình trên dữ liệu chưa từng thấy và tránh việc “quá khớp” vào dữ liệu huấn luyện.

from sklearn.model_selection import train_test_split

data['day_of_week'] = data['date'].dt.dayofweek
data['month'] = data['date'].dt.month
data['holiday'] = data['holiday'].map({'Yes':1, 'No':0})

features = ['temperature','rainfall','day_of_week','month','holiday']
X = data[features]
y = data['customers']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)
print("Train shape:", X_train.shape, "Test shape:", X_test.shape)

Huấn luyện mô hình Random Forest

Với bài toán dự đoán số khách là biến liên tục, chúng ta sử dụng model Random Forest Regressor – nổi bật vì khả năng xử lý phi tuyến, robust với dữ liệu hỗn hợp và hiếm khi yêu cầu chuẩn hóa đầu vào.

Chúng ta sẽ khởi tạo mô hình với tham số đơn giản và tiến hành huấn luyện trên dữ liệu train.

from sklearn.ensemble import RandomForestRegressor

model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

Đánh giá mô hình

Muốn biết mô hình hoạt động tốt đến đâu, chúng ta sử dụng các chỉ số như MAE (Mean Absolute Error) và RMSE (Root Mean Squared Error). Nếu MAE khoảng 5–10 khách, bạn đã có một mô hình tốt để triển khai trong thực tế.

Ngoài ra, việc vẽ đồ thị so sánh giữa số khách thực tế và giá trị dự đoán giúp trực quan hóa hiệu quả mô hình trên nhiều khoảng thời gian.

from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as np

y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"MAE: {mae:.2f}, RMSE: {rmse:.2f}")

plt.figure(figsize=(10,6))
plt.plot(y_test.values, label='Actual')
plt.plot(y_pred, linestyle='--', label='Predicted')
plt.title('Actual vs Predicted Customers')
plt.xlabel('Test Sample Index')
plt.ylabel('Customers')
plt.legend()
plt.show()

Kết luận

Qua bài viết, bạn đã nắm được quy trình dự báo số khách bằng máy học: từ đọc dữ liệu, xử lý, huấn luyện mô hình đến đánh giá kết quả. Mô hình hiện tại có thể được nâng cấp bằng cách thêm biến độ ẩm, số lượng nhân viên phục vụ, hoặc thử các mô hình khác như XGBoost, CatBoost hay LSTM nếu bạn có dữ liệu theo chuỗi thời gian.

Khi cần deploy, bạn có thể lưu mô hình (joblib.dump(...)) và sử dụng Flask để tạo API để cho phép chủ quán nhập thời tiết và ngày tới để nhận kết quả dự báo.

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!