Rượu từ lâu đã là một loại thức uống truyền thống và phổ biến trên khắp thế giới, đã trở thành một biểu tượng của nền văn hóa và ẩm thực độc đáo. Sự đa dạng về loại rượu, cùng với sự thay đổi các thành phần hóa học trong quá trình sản xuất và chế biến, tạo nên sự phức tạp trong việc phân loại và xác định nguồn gốc của chúng. Do đó việc nghiên cứu và phân loại rượu đã trở thành một lĩnh vực quan trọng, đặc biệt đối với nền công nghiệp thực phẩm, thương mại, y tế,.. ngày nay. Trong bài báo cáo đồ án này, chúng tôi tập trung vào việc phân loại rượu sử dụng mô hình KNearest Neighbors và PCA. Mô hình KNearest Neighbors (KNN): KNN là một thuật toán học máy đơn giản nhưng mạnh mẽ trong việc phân loại dữ liệu. Điểm mạnh của KNN nằm ở khả năng phân loại hiệu quả và độ linh hoạt khi không yêu cầu một mô hình toán học cụ thể. Phân tích thành phần chính (PCA): PCA là một phương pháp giảm chiều dữ liệu, giúp loại bỏ sự phức tạp và giảm số chiều của dữ liệu mà vẫn bảo toàn được thông tin quan trọng. Sự kết hợp giữa thuật toán KNN và phương pháp PCA cho phép chúng tôi nắm bắt các yếu tố quan trọng trong sự đa dạng các thành phần dữ liệu về rượu, đồng thời tối ưu hóa quá trình phân loại và cung cấp một cách tiếp cận hiệu quả để giải quyết vấn đề này. Nội dung báo cáo đồ án nà
TỔNG QUAN
Tìm hiểu về Machine Learning (Học Máy)
Học máy là một nhánh của trí tuệ nhân tạo, tập trung vào việc phát triển các kỹ thuật cho phép hệ thống tự động học từ dữ liệu nhằm giải quyết các vấn đề cụ thể Chẳng hạn, các thuật toán học máy có khả năng phân loại email thành thư rác hay không và tự động sắp xếp chúng vào các thư mục tương ứng.
Machine Learning là một lĩnh vực liên quan đến thống kê, nhưng tập trung vào việc phát triển các thuật toán phức tạp để phân tích dữ liệu Hiện nay, Machine Learning được áp dụng rộng rãi trong nhiều lĩnh vực như truy tìm dữ liệu, phân tích thị trường chứng khoán, và phân loại tiếng nói cũng như chữ viết.
1.1.2 Vai trò của Machine Learning
Ngày nay, machine learning ngày càng trở nên quan trọng trong nhiều ngành nghề làm việc với lượng dữ liệu lớn Trong lĩnh vực tài chính, công nghệ này giúp phân tích dữ liệu để phát hiện gian lận và xác định cơ hội đầu tư, giảm thiểu rủi ro Chính phủ cũng áp dụng machine learning để phân tích dữ liệu cảm biến, phát hiện gian lận và bảo vệ an ninh cộng đồng Trong chăm sóc sức khỏe, các thiết bị đeo thông minh sử dụng machine learning để theo dõi sức khỏe bệnh nhân theo thời gian thực và cung cấp cảnh báo kịp thời.
Ngành dầu khí đóng vai trò quan trọng trong việc tìm kiếm nguồn năng lượng mới, thông qua việc phân tích các chất khoáng dưới lòng đất và dự đoán lỗi cảm biến trong các máy lọc dầu Trong khi đó, lĩnh vực giao thông vận tải cũng cần phân tích mô hình và xu hướng địa hình để xác định những tuyến đường hiệu quả hơn, đồng thời dự đoán các vấn đề tiềm ẩn có thể ảnh hưởng đến lợi nhuận.
1.1.3 Một số kỹ thuật trong Machine Learning
• Trợ lý cá nhân ảo (Virtual Personal Assistants)
• Phân loại khuôn mặt , giọng nói , vân tay , chữ , số ,…
• Chuyển đổi lời nói thành văn bản
• Xử lý ngôn ngữ tự nhiên
• Chuyển đổi văn bản thành giọng nói
• Ứng dụng trong các mạng xã hội
1.1.4 Một số phương pháp của Machine Learning
- Học có giám sát (supervised learning):
Học máy có giám sát yêu cầu huấn luyện thuật toán với dữ liệu đầu vào đã được gắn nhãn Các thuật toán học tập có giám sát thường được áp dụng cho các tác vụ như phân loại, hồi quy và nhận diện mẫu.
• Phân loại nhị phân: Chia dữ liệu thành hai loại
• Phân loại nhiều lớp: Lựa chọn giữa nhiều hơn hai loại câu trả lời
• Mô hình hồi quy: Dự đoán các giá trị liên tục
• Ghép nối: Kết hợp các dự đoán của nhiều mô hình học máy để tạo ra dự đoán chính xác
- Học không có giám sát (unsupervised learning):
Các thuật toán học máy không giám sát không cần dữ liệu gắn nhãn, và phần lớn các phương pháp học sâu, bao gồm mạng thần kinh nhân tạo, thuộc loại này Những thuật toán này rất hiệu quả cho nhiều tác vụ khác nhau.
• Phân cụm: Tách tập dữ liệu thành các nhóm dựa trên sự giống nhau
• Phát hiện bất thường: Xác định các điểm dữ liệu bất thường trong tập dữ liệu
• Khai thác liên kết: Xác định các tập hợp các mục trong tập dữ liệu thường xuyên xảy ra cùng nhau
• Giảm kích thước: Giảm số lượng biến trong tập dữ liệu
- Học bán giám sát (semi-supervised learning):
Hình 1.3 Semi-supervised learning
• Dịch máy: Dạy các thuật toán dịch ngôn ngữ dựa trên ít hơn một từ điển đầy đủ các từ
• Phát hiện gian lận: Xác định các trường hợp gian lận khi bạn chỉ có một vài ví dụ tích cực
- Học tăng cường (reinforcement learning):
Học máy tăng cường hoạt động thông qua việc lập trình một thuật toán với mục tiêu cụ thể và bộ quy tắc để đạt được mục tiêu đó Thuật toán được thiết kế để tìm kiếm phần thưởng tích cực khi thực hiện hành động có lợi cho mục tiêu cuối cùng, đồng thời tránh các hình phạt khi hành động làm xa rời mục tiêu Công nghệ này thường được áp dụng trong nhiều lĩnh vực khác nhau.
• Robot: Robot có thể học cách thực hiện các nhiệm vụ trong thế giới thực bằng cách sử dụng kỹ thuật này
• Trò chơi video: Học máy tăng cường đã được sử dụng để dạy bot chơi một số trò chơi điện tử
Quản lý nguồn lực hiệu quả là rất quan trọng cho doanh nghiệp với nguồn lực hữu hạn Học máy tăng cường có thể hỗ trợ trong việc lập kế hoạch phân bổ nguồn lực một cách tối ưu, giúp doanh nghiệp đạt được mục tiêu đã đề ra.
Tìm hiểu về bài toán phân loại rượu
1.2.1 Tổng quan về bài toán phân loại rượu
Bài toán phân loại rượu thuộc lĩnh vực nhận dạng và phân loại, với mục tiêu xác định loại rượu dựa trên các đặc trưng của nó Việc này có thể thực hiện thông qua các thuật toán máy học và kỹ thuật khai thác dữ liệu.
Trong quá trình phân loại rượu, các đặc trưng quan trọng như thành phần hóa học, hương vị, màu sắc, quốc gia sản xuất, loại nho và độ cồn được sử dụng để xây dựng mô hình phân loại Việc phân tích và xử lý dữ liệu giúp tạo ra một hệ thống tự động phân loại các loại rượu dựa trên những đặc trưng này.
Có nhiều thuật toán phân loại rượu khác nhau, phù hợp với quy mô dữ liệu, đặc điểm của rượu và yêu cầu cụ thể của bài toán Một số thuật toán phổ biến thường được sử dụng trong phân loại rượu bao gồm: cây quyết định, hồi quy logistic, và mạng nơ-ron.
1.2.2 Ứng dụng của công nghệ phân loại rượu trong đời sống hiện nay
Công nghệ phân loại rượu hiện nay đang được ứng dụng rộng rãi trong nhiều lĩnh vực của đời sống Một số ví dụ tiêu biểu về các ứng dụng này bao gồm việc xác định chất lượng rượu, phân loại theo hương vị và màu sắc, cũng như hỗ trợ trong quá trình sản xuất và tiêu thụ rượu.
Công nghệ phân loại rượu đang được ứng dụng để phát triển các ứng dụng di động và trang web, giúp người dùng tìm kiếm và lựa chọn loại rượu phù hợp với sở thích cá nhân Bằng cách phân loại dựa trên các đặc trưng và mô tả của từng loại rượu, công nghệ này cung cấp những gợi ý mua sắm hữu ích và đánh giá từ những người tiêu dùng khác.
Quản lý kho rượu trong nhà hàng, quầy bar và cửa hàng rượu có thể được cải thiện đáng kể nhờ công nghệ phân loại rượu Các hệ thống tự động giúp phân loại rượu theo loại, quốc gia sản xuất, độ tuổi và giá trị, từ đó tạo ra báo cáo và đánh giá, giúp quản lý kho rượu một cách thuận tiện và chính xác.
Công nghệ phân loại rượu đóng vai trò quan trọng trong việc chống hàng giả và đảm bảo chất lượng sản phẩm Hệ thống này có khả năng so sánh các đặc trưng của chai rượu với dữ liệu đã được xác định trước, từ đó xác định tính xác thực của rượu và ngăn chặn tình trạng giả mạo.
Công nghệ phân loại rượu đang được ứng dụng để phát triển hệ thống tư vấn rượu cá nhân, giúp người dùng tìm kiếm và lựa chọn các loại rượu phù hợp Dựa trên sở thích và lịch sử tiêu dùng của người dùng, hệ thống này sẽ đưa ra các gợi ý chính xác, đáp ứng khẩu vị và nhu cầu cá nhân của từng người.
Công nghệ phân loại rượu đóng vai trò quan trọng trong quy trình sản xuất, giúp phân loại các loại rượu dựa trên chất lượng, hương vị và các đặc trưng khác Việc này đảm bảo rằng sản phẩm cuối cùng đạt tiêu chuẩn chất lượng cao và sự đồng nhất của nhãn hiệu rượu.
Công nghệ phân loại rượu không chỉ mang lại lợi ích cho ngành công nghiệp rượu mà còn ảnh hưởng tích cực đến đời sống hàng ngày, từ việc hỗ trợ mua sắm và tư vấn rượu đến quản lý kho và đảm bảo chất lượng sản phẩm.
1.3 Mục tiêu và phương pháp nghiên cứu
Nghiên cứu này tập trung vào việc áp dụng và tối ưu hóa thuật toán K-Nearest Neighbors (KNN) để phân loại các loại rượu dựa trên các thuộc tính nhất định Mục tiêu cụ thể của nghiên cứu là cải thiện độ chính xác trong việc phân loại rượu bằng cách tối ưu hóa các tham số của thuật toán KNN.
• Thu thập và tiền xử lý dữ liệu:
- Thu thập dữ liệu chính xác và đầy đủ về các loại rượu cùng các thuộc tính liên quan
- Tiền xử lý dữ liệu để loại bỏ nhiễu và chuẩn hóa để tối ưu hóa hiệu suất KNN
• Tối ưu hóa tham số và phát triển mô hình KNN:
- Lựa chọn tham số K tối ưu cho KNN thông qua thử nghiệm và đánh giá hiệu suất
- Phát triển một mô hình KNN chính xác và hiệu quả dựa trên dữ liệu tiền xử lý
• Xây dựng mô hình phân loại rượu:
Tạo ra một ứng dụng hoặc giao diện đơn giản sử dụng mô hình KNN để phân loại rượu theo các thuộc tính được nhập từ người dùng
• Đánh giá và so sánh:
- Đánh giá hiệu suất của mô hình KNN so với các phương pháp phân loại khác
- So sánh ưu nhược điểm của KNN với các thuật toán khác để đưa ra kết luận về sự hiệu quả của KNN trong bài toán phân loại rượu
Mục tiêu là xây dựng một hệ thống phân loại rượu sử dụng KNN có hiệu suất cao, linh hoạt và dễ triển khai trong thực tế
Nghiên cứu này tập trung vào việc phân loại các loại rượu dựa trên các thuộc tính hóa học và vị giác, áp dụng thuật toán K-Nearest Neighbors (KNN) Các loại rượu được phân loại bao gồm rượu vang đỏ, rượu vang trắng, rượu mạnh và các loại rượu khác, sử dụng dữ liệu từ các nguồn như bộ dữ liệu UCI Machine Learning và Wine Spectator.
- Phạm Vi Phương Pháp Nghiên Cứu:
Để thu thập dữ liệu về các loại rượu, bạn nên sử dụng thông tin hóa học và vị giác từ các nguồn uy tín như trang web chính thức của các nhà sản xuất rượu, cơ sở dữ liệu UCI Machine Learning và Wine Spectator.
Tiền xử lý dữ liệu là bước quan trọng trong việc chuẩn bị dữ liệu cho thuật toán KNN, bao gồm các hoạt động như chuẩn hóa dữ liệu, loại bỏ các giá trị thiếu và chuyển đổi các đặc trưng thành định dạng phù hợp.
• Xây dựng mô hình KNN: Sử dụng thuật toán KNN để xây dựng mô hình phân loại các loại rượu dựa trên các đặc trưng đã được xác định
Đánh giá và tối ưu hóa mô hình KNN là bước quan trọng để cải thiện hiệu suất Các chỉ số như độ chính xác (accuracy), độ chính xác (precision), độ hồi tưởng (recall) và F1-score sẽ được sử dụng để đánh giá hiệu quả của mô hình Bên cạnh đó, việc tối ưu hóa các tham số, đặc biệt là số lân cận (k), sẽ giúp đạt được kết quả tốt nhất cho mô hình.
- Hạn Chế Phạm Vi Nghiên Cứu:
CÁC PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Một số kĩ thuật giải quyết bài toán
2.1.1 Thuật toán K-Nearest Neighbor (KNN)
K-láng giềng gần nhất (K Nearest Neighbor - KNN) là một trong những thuật toán học có giám sát đơn giản nhất trong Machine Learning Ý tưởng của KNN là tìm ra output của dữ liệu dữ trên thông tin của những dữ liệu training gần nó nhất
• Quy trình làm việc của thuật toán KNN
Bước 1: Xác định tham số K = số láng giềng gần nhất
Bước 2: Tính khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong training data
Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gần nhất với đối tượng cần phân lớp
Bước 4: Lấy tất cả các lớp của K láng giềng gần nhất
Bước 5: Dựa vào phần lớn lớp của K để xác định lớp cho đối tượng cần phân lớp
Hình 2.1 Ví dụ minh họa của thuật toán KNN
Bài toán đặt ra là xác định loại điểm (Giỏi, Khá) khi bạn chỉ biết điểm số mà không có quy tắc phân loại Hình vuông đỏ đại diện cho điểm Khá và hình tam giác xanh cho điểm Giỏi Điểm chấm xanh lá là điểm cần phân loại Một giải pháp là khảo sát những người có điểm gần nhất với bạn Giả sử trong lớp có 50 học sinh, bạn hỏi 3 người có điểm gần nhất và thu thập dữ liệu Với K=3, có hai hình tam giác xanh và một hình vuông đỏ gần điểm chấm xanh, cho thấy tỷ lệ hình tam giác xanh cao hơn Do đó, có thể kết luận điểm của bạn là điểm Khá.
• Ví dụ về KNN nhiễu
Bài toán phân lớp trong ví dụ này bao gồm ba lớp màu sắc: Đỏ, Lam và Lục Mỗi điểm dữ liệu mới sẽ được gán nhãn dựa trên màu sắc của điểm mà nó thuộc về Hình ảnh minh họa cho thấy có một số vùng nhỏ lẫn vào các vùng lớn hơn có màu khác.
Có một điểm màu Lục gần góc 11 giờ nằm giữa hai vùng lớn chứa nhiều dữ liệu màu Đỏ và Lam, có khả năng là nhiễu Nếu dữ liệu thử nghiệm rơi vào vùng này, khả năng cho kết quả không chính xác sẽ tăng cao.
• Khoảng cách trong không gian vector
Trong không gian một chiều, khoảng cách giữa hai điểm được xác định bởi trị tuyệt đối của hiệu giá trị giữa chúng Trong không gian nhiều chiều, khoảng cách này có thể được định nghĩa qua nhiều hàm số khác nhau, với độ dài đường thẳng nối hai điểm là một trường hợp đặc biệt Thêm vào đó, nhiều thông tin hữu ích cho Machine Learning có thể được tìm thấy tại phần Norms (chuẩn) của vector trong tab Math.
• Ưu điểm của thuật toán
KNN không đặt ra giả định nào về phân phối dữ liệu, cho phép nó hoạt động hiệu quả trên các tập dữ liệu phức tạp và không tuân theo phân phối chuẩn.
KNN là một thuật toán linh hoạt có thể áp dụng cho nhiều loại dữ liệu, bao gồm dữ liệu số và dữ liệu phân loại Nó cũng hỗ trợ giải quyết các bài toán phân loại đa lớp một cách hiệu quả.
- KNN có khả năng đạt được độ chính xác cao khi số lượng điểm dữ liệu lớn và các điểm dữ liệu có khoảng cách giữa nhau đủ xa
KNN là phương pháp phân loại hiệu quả cho dữ liệu mới mà không cần tái tính toán toàn bộ mô hình Nó hoạt động bằng cách xác định khoảng cách giữa dữ liệu mới và các điểm dữ liệu cũ, sau đó chọn K hàng xóm gần nhất để phân loại dữ liệu mới dựa trên thông tin từ những hàng xóm này.
• Nhược điểm của thuật toán
KNN rất nhạy cảm với nhiễu và giá trị ngoại lai, vì các điểm gần nhau thường được phân loại vào cùng một nhóm Sự hiện diện của các giá trị ngoại lai có thể ảnh hưởng đáng kể đến kết quả phân loại, làm giảm độ chính xác của mô hình.
Số lượng hàng xóm (K) có vai trò quan trọng trong quá trình phân loại Nếu giá trị K được chọn quá lớn, việc phân loại sẽ trở nên quá đơn giản và không chính xác.
Việc chọn giá trị K trong phân loại có thể ảnh hưởng lớn đến kết quả Nếu K quá lớn, mô hình sẽ trở nên đơn giản và không đủ linh hoạt để xử lý các trường hợp phức tạp Ngược lại, nếu K quá nhỏ, phân loại sẽ trở nên phức tạp và dễ bị tác động bởi nhiễu.
Phương pháp KNN có thể gặp khó khăn trong việc tính toán khoảng cách giữa các điểm dữ liệu, đặc biệt khi số lượng điểm dữ liệu lớn, dẫn đến hiệu suất giảm khi xử lý các tập dữ liệu lớn.
Khi số chiều của tập dữ liệu tăng lên, khoảng cách giữa các điểm dữ liệu trở nên đồng nhất, dẫn đến việc mất đi ý nghĩa trong việc phân loại các điểm dữ liệu.
KNN không hỗ trợ quá trình học tập, điều này có nghĩa là nó không thể học và cải thiện các đặc trưng của tập dữ liệu để nâng cao độ chính xác trong phân loại Thay vào đó, phương pháp này chỉ đơn giản lưu trữ toàn bộ tập dữ liệu và sử dụng lại các điểm dữ liệu để thực hiện phân loại.
Đề xuất mô hình để giải quyết bài toán
2.2.1 Mô hình KNN (K-Nearest Neighbors)
K-nearest neighbor là một trong những thuật toán supervised-learning đơn giản nhất (mà hiệu quả trong một vài trường hợp) trong Machine Learning Khi training, thuật toán này không học một điều gì từ dữ liệu training (đây cũng là lý do thuật toán này được xếp vào loại lazy learning), mọi tính toán được thực hiện khi nó cần dự đoán kết quả của dữ liệu mới KNN có thể áp dụng được vào cả hai loại của bài toán Supervised learning là Classification và Regression
• Độ phức tạp tính toán của quá trình training là bằng 0
• Việc dự đoán kết quả của dữ liệu mới rất đơn giản
• Không cần giả sử gì về phân phối của lớp
35 lân cận), không quan tâm đến việc có một vài điểm dữ liệu trong những điểm gần nhất này là nhiễu
2.2.2 Thuật toán hỗ trợ (PCA) a) Tiền xử lý dữ liệu (nói qua về Standard Scaler)
• Thuật toán PCA cần phải xử lý dữ liệu đầu vào vì các lý do sau:
Để chuẩn hóa dữ liệu, cần đảm bảo rằng tất cả các biến và giá trị của chúng nằm trong cùng một phạm vi Việc này sẽ giúp đơn giản hóa quá trình tính toán ma trận hiệp phương sai cũng như các vector riêng và giá trị riêng.
Để giảm chiều dữ liệu mà vẫn bảo tồn các đặc trưng quan trọng, chỉ cần loại bỏ một phần nhỏ các đặc trưng Việc này giúp tiết kiệm thời gian và chi phí tính toán, đồng thời tạo điều kiện thuận lợi cho việc trực quan hóa dữ liệu.
Để giải quyết vấn đề về số chiều, quy trình giảm số chiều đã được áp dụng Kỹ thuật này giúp lọc ra những đặc điểm quan trọng cần thiết cho việc đào tạo, và đây chính là lúc PCA (Phân tích thành phần chính) trở nên hữu ích.
• Xử lý dữ liệu bằng Standard Scaler
Importance of Feature Scaling — scikit-learn 1.2.2 documentation
Hoc lap trinh,thuat toan machine learning standardscaler, hàm standardscaler trong machine learning b) Principal Component Analysis (PCA)
Thuật toán PCA là một phương pháp giảm chiều dữ liệu hiệu quả, thường được áp dụng trong học máy và khai phá dữ liệu Khi kết hợp với thuật toán KNN (K-Nearest Neighbors), PCA mang lại nhiều lợi ích, bao gồm việc cải thiện hiệu suất và độ chính xác của mô hình.
PCA giúp giảm số chiều dữ liệu bằng cách rút gọn số lượng thuộc tính xuống còn k thuộc tính, với k nhỏ hơn số lượng thuộc tính ban đầu Bằng cách loại bỏ các thuộc tính không quan trọng hoặc có mối tương quan cao, PCA nâng cao hiệu quả và độ chính xác của thuật toán KNN.
Xử lý nhiễu là một yếu tố quan trọng trong việc cải thiện độ chính xác của mô hình, và PCA (Phân tích thành phần chính) đóng vai trò then chốt trong việc
Giảm số chiều dữ liệu không chỉ giúp giảm thời gian tính toán mà còn tăng tốc độ xử lý dữ liệu, đặc biệt hữu ích khi làm việc với lượng mẫu dữ liệu lớn.
Khi kết hợp PCA với thuật toán KNN, độ chính xác của mô hình có thể được cải thiện đáng kể Điều này đạt được nhờ vào việc giảm số chiều dữ liệu và loại bỏ các thuộc tính không quan trọng hoặc có sự tương quan lẫn nhau.
Kết hợp thuật toán PCA với KNN có thể nâng cao hiệu quả và độ chính xác của mô hình, đặc biệt trong việc xử lý các bài toán với số lượng thuộc tính lớn và dữ liệu nhiễu.
Kết quả thu được được trình bày trên biểu đồ hai chiều, trong đó các điểm dữ liệu được thể hiện dưới dạng các chấm trên biểu đồ Những điểm này sẽ được phân bố trên mặt phẳng theo hướng của PC1 và PC2.
Code: Để thực hiện PCA trên Python, ta có thể sử dụng module scikit-learn như sau:
• Ưu điểm và nhược điểm:
Phân tích thành phần chính (PCA) có một số nhược điểm đáng lưu ý Đầu tiên, PCA có thể gặp khó khăn trong việc diễn giải kết quả, vì các thành phần chính không trực tiếp liên quan đến các thuộc tính ban đầu Thứ hai, phương pháp này chỉ áp dụng hiệu quả cho các dữ liệu có phân phối chuẩn và tương quan tuyến tính giữa các thuộc tính.
XÂY DỰNG MÔ HÌNH
Giới thiệu về bộ dữ liệu
Bộ dữ liệu Wine chứa thông tin về phân tích hóa học của rượu vang từ ba giống cây trồng khác nhau ở Ý, với 13 thành phần được xác định trong mỗi loại rượu Mặc dù tập dữ liệu ban đầu có khoảng 30 biến, nhưng hiện chỉ còn phiên bản 13 chiều Mục tiêu chính là phát triển một mô hình dự đoán loại rượu dự
Lĩnh vực chủ đề: Vật lý và hóa học
Nhiệm vụ liên quan: Phân loại
Loại tính năng: số nguyên, số thực
Mục tiêu: Sử dụng phân tích hóa học để xác định nguồn gốc rượu vang Mục tiêu dự đoán: Wine (1, 2, 3)
11 OD280/OD315 of diluted wines
Các thư viện chính được sử dụng cho mô hình phân loại
NumPy là một thư viện cốt lõi trong Python dành cho khoa học máy tính, hỗ trợ tính toán các mảng nhiều chiều lớn với các hàm tối ưu Thư viện này rất hữu ích cho các phép toán liên quan đến Đại Số Tuyến Tính NumPy giúp cải thiện hiệu suất bằng cách cung cấp các mảng và hàm đa chiều, cho phép thực hiện các toán tử một cách hiệu quả Để tận dụng NumPy, người dùng cần viết lại một số mã, đặc biệt là các vòng lặp bên trong, nhằm tối ưu hóa quá trình tính toán.
Hình 3.1 Thư viện Numpy b, Thư viện Matplotlib:
Thư viện Python phổ biến này chuyên về việc vẽ đồ thị và biểu đồ trong lĩnh vực khoa học dữ liệu và phân tích dữ liệu Nó cung cấp những công cụ vẽ đồ thị đơn giản nhưng linh hoạt, giúp người dùng tạo ra các đồ thị đẹp mắt và chuyên nghiệp.
Hình 3.2 Thư viện Matplotlib c, Thư viện Pandas:
Thư viện mã nguồn mở này cung cấp hỗ trợ hiệu quả cho việc thao tác dữ liệu, đồng thời là bộ công cụ phân tích và xử lý dữ liệu mạnh mẽ cho ngôn ngữ lập
Thư viện Pandas trong Python là công cụ phổ biến cho nghiên cứu và phát triển ứng dụng khoa học dữ liệu Nó sử dụng cấu trúc dữ liệu DataFrame, cung cấp nhiều chức năng mạnh mẽ để xử lý và làm việc với dữ liệu Sự linh hoạt và hiệu quả của Pandas đã làm cho nó trở thành lựa chọn hàng đầu trong lĩnh vực này.
Hình 3.3 Thư viện Pandas d, Thư viện Scikit-learn:
Scikit-learn là thư viện mạnh mẽ nhất cho các thuật toán học máy được viết bằng Python, cung cấp công cụ cho các bài toán machine learning và mô hình thống kê như phân loại, hồi quy, phân cụm và giảm chiều Thư viện này tập trung vào việc xây dựng các sản phẩm dễ sử dụng, dễ lập trình, dễ tham khảo và hiệu quả cao Scikit-learn hỗ trợ nhiều thuật toán trong Machine Learning, bao gồm Decision Tree, K-Nearest Neighbor và nhiều thuật toán khác.
Hình 3.4 Thư viện Scikit-learn
Tiền xử lý dữ liệu
Đầu tiên chúng ta hãy xem trước 1 vài mẫu dữ liệu
Mã nguồn: xem trước 1 vài mẫu dữ liệu:
41 df = pd.read_csv("D:\Wine.csv") print(df.head()) print(df.info())
Hình 3.5 Một vài mẫu dữ liệu
Xem thông tin loại dữ liệu trong bộ dữ liệu:
Hình 3.6 Thông tin các cột thuộc tính
Xem trước phân phối dữ liệu của bộ dữ liệu:
Hình 3.7 Phân phối dữ liệu
Kiểm tra dữ liệu khuyết thiếu:
Hình 3.8 Số các giác khuyết thiếu của từng thuộc tính
Có thể thấy bộ dữ liệu không chứa các mẫu có giá trị thuộc tính rỗng nên không cần xử lý bước này
Xem trước số lượng các nhãn cần phân loại của bộ dữ liệu:
Hình 3.9 Số lượng các nhãn
Xem mối quan hệ của từng thuộc tính của tập dữ liệu huấn luyện
Hình 3.10 Mối quan hệ của từng thuộc tính của tập dữ liệu huấn luyện
Chuẩn hóa dữ liệu là bước thiết yếu trong quá trình xử lý dữ liệu trước khi áp dụng các thuật toán học máy, đặc biệt là PCA (Phân tích thành phần chính) và KNN.
Sử dụng StandardScaler để chuẩn hóa dữ liệu giúp đưa các biến về cùng một phạm vi với trung bình bằng 0 và độ lệch chuẩn bằng 1 Việc này hỗ trợ thuật toán học máy hiểu rõ hơn về cấu trúc dữ liệu.
Mã nguồn chuẩn hóa dữ liệu: from sklearn.preprocessing import StandardScaler scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
Hình 3.11 Mối quan hệ của từng thuộc tính của tập dữ liệu huấn luyện sau khi chuẩn hóa dữ liệu
Xây dựng mô hình KNN
Áp dụng thuật toán KNN vào tập dữ liệu huấn luyện, tuy nhiên chúng ta sẽ chưa áp dụng PCA để giảm chiều dữ liệu
To build a KNN model, import the KNeighborsClassifier from sklearn.neighbors and initialize it with n_neighbors set to 3 Fit the model using the training data (X_train and y_train) Finally, evaluate the model's performance by importing classification_report from sklearn.metrics and printing the report based on the test data (y_test) and the model's predictions on the test set (X_test).
Hình 3.12 Kết quả mô hình khi chưa áp dụng PCA
Hình 3.13.Ma trận hỗn loạn khi chưa áp dụng PCA Áp dụng PCA để giảm chiều dữ liệu từ xuống còn 3 chiều dữ liệu chính
The article discusses the implementation of a K-Nearest Neighbors (KNN) model using Principal Component Analysis (PCA) for dimensionality reduction It begins by importing PCA from the sklearn.decomposition module and initializing it with three components The training data is transformed using the fit_transform method, while the test data is transformed with the transform method A KNeighborsClassifier is then created with five neighbors, and the model is fitted using the transformed training data and corresponding labels Finally, the classification report is imported from sklearn.metrics to evaluate the model's performance.
47 print(classification_report(y_test,pc_knn.predict(ts_comp)))
Hình 3.14 Kết quả mô hình khi áp dụng PCA
Hình 3.15 Ma trận hỗn loạn khi mô hình áp dụng PCA
Sau khi áp dụng phương pháp giảm chiều dữ liệu PCA, độ chính xác của mô hình đã tăng từ 94% lên 97% Điều này cho thấy việc sử dụng PCA không chỉ giúp giảm chiều dữ liệu mà còn cải thiện khả năng dự đoán chính xác của mô hình trên tập kiểm tra.
Cả precision và recall của từng lớp đều đạt điểm số trên 0.89, cho thấy mô hình hoạt động hiệu quả Điều này chứng tỏ rằng mô hình không chỉ chính xác mà còn có khả năng phát hiện tốt các lớp khác nhau.
Dự đoán chính xác các điểm dữ liệu là rất quan trọng, đồng thời cần giữ được sự cân bằng giữa việc tránh dự đoán sai và không bỏ sót các điểm thực tế Điểm F1 của từng lớp và điểm trung bình đều đạt mức cao, đặc biệt là điểm F1 của lớp.
1 là 1.00, cho thấy mô hình đạt được sự cân bằng tốt giữa precision và recall
Cả macro avg và weighted avg của các số liệu đánh giá đều cao, với weighted avg đạt 0.97, chứng tỏ mô hình hoạt động hiệu quả trên tất cả các lớp và toàn bộ tập dữ liệu.
Việc áp dụng PCA để giảm chiều dữ liệu đã nâng cao hiệu suất mô hình phân loại một cách rõ rệt Mô hình hiện tại có khả năng dự đoán chính xác và duy trì sự cân bằng tốt giữa các lớp trong tập kiểm tra.