Khi cân nhắc mua một chiếc laptop mới, câu hỏi phổ biến nhất là: “Tôi nên trả bao nhiêu cho nó?”. Việc tìm kiếm thông tin qua hàng ngàn trang web hay dạo quanh các cửa hàng có thể tốn rất nhiều thời gian và công sức. Tuy nhiên, với một chút kiến thức về Python và hồi quy tuyến tính, bạn hoàn toàn có thể xây dựng một công cụ dự đoán giá laptop hiệu quả, giúp quá trình này trở nên dễ dàng và chính xác hơn.
Tại Sao Cần Xây Dựng Công Cụ Dự Đoán Giá Laptop?
Việc lùng sục qua hàng ngàn trang web hoặc các cửa hàng vật lý để tìm kiếm một chiếc laptop ưng ý có thể tiêu tốn rất nhiều thời gian quý báu. Với số lượng mẫu mã khổng lồ trên thị trường, việc tự mình tổng hợp và phân tích thông tin để xác định mức giá hợp lý cho từng cấu hình là điều gần như không thể. Mục tiêu của chúng tôi là tạo ra một chương trình nơi bạn chỉ cần nhập các thông số kỹ thuật mong muốn, như dung lượng RAM hay độ phân giải màn hình, và nó sẽ trả về mức giá dự kiến.
Ai cũng muốn tránh việc trả giá quá cao cho một thiết bị công nghệ. Với kiến thức về hồi quy tuyến tính từ môn thống kê, chúng tôi nhận ra rằng có thể dễ dàng xây dựng một mô hình để trả lời những câu hỏi này. Python là một ngôn ngữ tuyệt vời, đã trở nên phổ biến trong phân tích dữ liệu nhờ sự đơn giản, dễ học và cung cấp các thư viện mạnh mẽ, phù hợp cho cả những người không có nền tảng khoa học máy tính.
Bộ Công Cụ Thống Kê Python Cho Phân Tích Giá Laptop
Để xây dựng dự án này, chúng tôi đã sử dụng những thư viện trong hệ sinh thái thống kê của Python mà chúng tôi đã quen thuộc. Trước đó, một môi trường Mamba đã được thiết lập sẵn với các công cụ này. Mặc dù nhiều hệ thống, bao gồm Linux, đi kèm với Python, nhưng phiên bản đó thường dành cho việc hỗ trợ hệ thống chứ không phải cho các chương trình của người dùng. Việc nâng cấp Python hệ thống có thể làm hỏng các script phụ thuộc vào nó, vì vậy các công cụ cài đặt môi trường tùy chỉnh như VirtualEnv hoặc Mamba là lựa chọn tốt hơn.
Thành phần đầu tiên không thể thiếu là NumPy. Đây là một thư viện phổ biến cho mọi loại phép toán số học, đặc biệt là các phép tính thống kê và đại số tuyến tính sẽ diễn ra trong nền.
Tiếp theo là thư viện Pandas, cho phép bạn nhập tập dữ liệu và xem nó dưới dạng các cột, hay còn gọi là “data frame”. Nó giống như sự kết hợp giữa một cơ sở dữ liệu quan hệ và một bảng tính, giúp bạn thực hiện các thao tác mạnh mẽ trên dữ liệu của mình.
Seaborn là một thư viện dùng để trực quan hóa các biểu đồ dữ liệu thống kê. Chúng tôi sử dụng nó để hiển thị phân phối dữ liệu qua biểu đồ tần suất (histograms), biểu đồ phân tán (scatterplots) và hồi quy tuyến tính.
Cuối cùng, Pingouin giúp thực hiện nhiều kiểm định thống kê một cách dễ dàng, mà không cần phải nhớ tất cả các công thức phức tạp đã học từ lâu. Đây chính là chương trình sẽ xây dựng mô hình thông qua hồi quy tuyến tính đa biến của giá bán lẻ so với tất cả các thuộc tính của laptop.
Việc thiết lập tất cả những công cụ này khá đơn giản trong hầu hết các môi trường giống Unix, bao gồm cả Windows khi sử dụng Windows Subsystem for Linux.
Jupyter Notebooks cung cấp một cách tương đối thân thiện với người dùng để chạy các lệnh Python và xem kết quả, cũng như lưu trữ chúng để sử dụng sau này. Đây là một công cụ tùy chọn nhưng rất hữu ích. Chúng tôi đã tạo một Jupyter notebook và sẽ trình bày các ví dụ code từ đó. Notebook này cũng đã được đăng tải lên GitHub của chúng tôi, để bạn có thể tham khảo thêm code và các ví dụ khác.
Với Mamba đã được cài đặt, bạn có thể tạo môi trường cần thiết. Để kích hoạt, chỉ cần gõ lệnh sau vào shell Linux:
mamba activate stats
Thu Thập Dữ Liệu Laptop Để Xây Dựng Mô Hình
Để xây dựng tập dữ liệu cho mô hình hồi quy, việc tự mình tìm kiếm qua các cửa hàng trực tuyến và xây dựng một cơ sở dữ liệu toàn diện về laptop sẽ mất rất nhiều thời gian, cũng như công sức để làm sạch và đồng bộ dữ liệu. May mắn thay, đã có người làm việc này.
Một cơ sở dữ liệu về laptop với các thông số kỹ thuật phần cứng như tốc độ CPU, dung lượng RAM, dung lượng lưu trữ, độ phân giải màn hình ngang và dọc, đã có sẵn trên Kaggle. Giá của các laptop trong dataset này được tính bằng euro, nhưng theo kiểm tra nhanh trên Xe.com vào tháng 7 năm 2025, tỷ giá hối đoái giữa euro và đô la Mỹ khá tương đồng, nên không cần điều chỉnh quá nhiều.
Xây Dựng Mô Hình Hồi Quy Dự Đoán Giá Laptop
Với môi trường đã được thiết lập và dữ liệu đã được thu thập, bây giờ là lúc xây dựng mô hình dự đoán giá laptop. Đầu tiên, chúng ta cần nhập các thư viện sẽ sử dụng:
import numpy as np
import pandas as pd
import seaborn as sns
%matplotlib inline
import pingouin as pg
Những dòng code này nhập các thư viện NumPy, Pandas, Seaborn và Pingouin. Chúng được viết tắt thành “np”, “pd”, “sns” và “pg” để tiện sử dụng. Dòng bắt đầu bằng “%” được dùng trong Jupyter Notebooks để chỉ định rằng các biểu đồ được vẽ bằng thư viện Matplotlib sẽ hiển thị ngay trong notebook. Nếu không, chúng sẽ xuất hiện trong một cửa sổ riêng.
Tiếp theo, chúng ta sẽ nhập dữ liệu với Pandas:
laptops = pd.read_csv("data/laptop_prices.csv")
Lệnh này sẽ tạo ra một Pandas DataFrame. Chúng ta có thể xem cách dữ liệu được sắp xếp bằng phương thức head()
:
laptops.head()
Bảng dữ liệu ban đầu của laptop hiển thị các cột thông số
Chúng ta cũng có thể xem các thống kê mô tả cơ bản của tất cả các cột số liệu bằng phương thức describe()
.
laptops.describe()
Bảng thống kê mô tả các thông số kỹ thuật laptop như giá, RAM, trọng lượng
Kết quả sẽ hiển thị giá trị trung bình, trung vị, độ lệch chuẩn, giá trị nhỏ nhất, tứ phân vị dưới (25th percentile), tứ phân vị trên (75th percentile) và giá trị lớn nhất của mỗi cột.
Chúng tôi cũng thích trực quan hóa phân phối dữ liệu thông qua biểu đồ tần suất (histograms). Hàm displot
của Seaborn sẽ giúp thực hiện điều này.
Để xem phân phối giá laptop:
sns.displot(x='Price_euros',data=laptops)
Biểu đồ tần suất phân phối giá laptop, cho thấy phần lớn giá nằm ở mức thấp và lệch phải
Biểu đồ này hiển thị giá trên trục x và sử dụng DataFrame laptops
làm nguồn dữ liệu. Chúng ta có thể thấy rõ rằng phần đuôi của phân phối bị lệch đáng kể sang phải, cho thấy có nhiều laptop giá thấp hơn và một số ít laptop giá rất cao.
Chúng ta sẽ xây dựng một mô hình sử dụng các thông số kỹ thuật khác nhau. Nó sẽ trông giống như sau:
giá = a(tốc độ CPU) + b(RAM) + c(kích thước màn hình tính bằng inch) + …
Các chữ cái (a, b, c…) là các hệ số được định nghĩa bởi hồi quy. Nó tương tự như hồi quy tuyến tính đơn giản mà bạn có thể đã thấy, nhưng thay vì khớp một đường thẳng trên biểu đồ phân tán, chúng ta đang khớp một mặt phẳng. Vì có nhiều hơn ba chiều trong mô hình này, thực tế nó là một siêu mặt phẳng.
Để thu được hồi quy của giá (tính bằng euro) so với kích thước laptop, tốc độ CPU, kích thước màn hình, trọng lượng, bộ nhớ chính và bộ nhớ phụ, hãy sử dụng hàm hồi quy tuyến tính của Pingouin:
pg.linear_regression(laptops[['Inches','Ram','Weight','ScreenW','ScreenH','CPU_freq','PrimaryStorage','SecondaryStorage']],laptops['Price_euros'],relimp=True)
Kết quả mô hình hồi quy đa biến dự đoán giá laptop, hiển thị hệ số và chỉ số R2
Lệnh này sẽ cung cấp cho chúng ta các hệ số cho phương trình hồi quy. Tùy chọn relimp=True
sẽ yêu cầu Pingouin tính toán mức độ đóng góp của mỗi biến vào giá. Các hệ số sẽ được hiển thị ở cột ngoài cùng bên trái, với cột ngoài cùng bên phải cho chúng ta biết rằng RAM là yếu tố dự đoán giá lớn nhất. Con số cần chú ý để xác định mức độ phù hợp của mô hình là bình phương của hệ số tương quan, đó là “r2” trong bảng này. Nó vào khoảng 0.66, nghĩa là mô hình có độ phù hợp khá tốt.
Với các hệ số đã dự đoán, chúng ta có thể cắm các giá trị vào phương trình để dự đoán giá. Dưới đây là một hàm thực hiện điều đó:
def price(inches,ram,weight,screenw,screenh,cpu_freq,primary_storage,secondary_storage):
return 77.11 + -69.81*inches + 77.89*ram + 92.04*ram + 0.04*screenw + 0.59*screenh + 284.51 - 0.21*primary_storage + -0.04 * secondary_storage
Lưu ý rằng dòng thứ hai cần được thụt vào trong code Python thực tế.
Thương Hiệu Có Thật Sự Ảnh Hưởng Đến Giá Laptop?
Mô hình hồi quy dự đoán giá laptop vừa xây dựng chỉ xem xét các thông số kỹ thuật. Tuy nhiên, bạn có thể tự hỏi liệu thương hiệu có phải là một yếu tố dự đoán giá quan trọng hay không. Chúng ta có thể sử dụng phân tích phương sai, hay ANOVA, để xác định xem sự khác biệt về giá giữa các thương hiệu có đáng kể hay không. Vì dữ liệu giá bị lệch, như đã thấy với biểu đồ tần suất, một kiểm định phi tham số sẽ chính xác hơn. Pingouin có một kiểm định Kruskal-Wallis phù hợp cho trường hợp này.
Kiểm định này sẽ kiểm tra giả thuyết null rằng không có mối quan hệ giữa giá và thương hiệu:
pg.kruskal(data=laptops,dv='Price_euros',between='Company').round(2)
Kết quả kiểm định Kruskal-Wallis về sự khác biệt giá giữa các thương hiệu laptop
Giá trị p-value là 0, điều này có nghĩa là sự khác biệt về giá giữa các thương hiệu thực sự có ý nghĩa thống kê. Việc làm tròn được thực hiện để giá trị p-value hiển thị rõ ràng hơn, nếu không nó sẽ hiển thị dưới dạng ký hiệu khoa học. Điều này có nghĩa là chúng ta có thể bác bỏ giả thuyết null và kết luận rằng thương hiệu là một yếu tố dự đoán quan trọng đối với giá laptop.
Chúng ta đã thành công trong việc xây dựng một công cụ dự đoán giá để giúp xác định mức giá hợp lý cho một chiếc máy tính dựa trên thông số kỹ thuật của nó. Đồng thời, chúng ta cũng đã phân tích và xác định được mức độ ảnh hưởng đáng kể của thương hiệu đến giá thành. Điều này minh chứng cho sức mạnh của Python và các thư viện phân tích dữ liệu trong việc biến một công việc phức tạp thành những dòng code đơn giản, mang lại giá trị thiết thực cho người dùng.
Với công cụ này, việc mua sắm laptop không còn là một cuộc “đánh cược” về giá, mà trở thành một quyết định có cơ sở khoa học. Bạn có muốn thử áp dụng những kiến thức này để đưa ra quyết định mua laptop thông minh hơn? Hãy chia sẻ ý kiến hoặc trải nghiệm của bạn về việc ứng dụng phân tích dữ liệu trong đời sống hàng ngày!