Báo cáo chuyên đề học phần nhập môn học máy | Trường đại học Điện Lực

Báo cáo chuyên đề học phần nhập môn học máy | Trường đại học Điện Lực được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
NHẬP MÔN HỌC MÁY
ĐỀ TI:
ỨNG DỤNG THUẬT TOÁN PHÂN CỤM KMEANS CLUSTERING
ĐỂ DỰ ĐOÁN CHẤT LƯỢNG CỦA RƯỢU VANG ĐỎ
Sinh viên thực hiện : NGUYỄN ĐỨC MINH
: TRẦN VIỆT ANH
Giảng viên hướng dẫn : VŨ VĂN ĐỊNH
Ngành : CÔNG NGHỆ THÔNG TIN
Chuyên ngành : QUẢN TRỊ AN NINH MẠNG
Lớp : D15QTANM
Khóa : 2020-2025
Hà Nội, tháng 11 năm 2022
PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện
Họ và tên Chữ ký Ghi Chú
Nguyễn Đức Minh
Trần Việt Anh
Giảng viên chấm
Họ và tên Chữ ký Ghi chú
Giảng viên chấm 1
Giảng viên chấm 2
MỤC LỤC
CHƯƠNG 1. TỔNG QUAN VỀ HỌC MÁY.........................................................2
1.1. Khái niệm về học máy:....................................................................................2
1.2. Phân nhóm các thuật toán học máy..................................................................2
1.2.1 Học có giám sát (Supervised Learning)......................................................2
1.2.2. Học phi giám sát (Unsupervised Learning)-UL........................................3
1.2.3 Học tăng cường (reinforcement learning)...................................................5
1.2.4 Học bán giám sát (Semi-Supervised Learning)..........................................5
1.3. Ứng dụng của học máy:...................................................................................6
CHƯƠNG 2 THUẬT TOÁN K-MEANS CLUSTERING TRONG BI TOÁN
PHÂN CỤM..............................................................................................................7
2.1 Tổng quan về thuật toán K-Means Clustering..................................................7
2.2. Thuật toán K-Means Clustering:......................................................................8
2.2.1. Mô hình toán học:......................................................................................8
2.2.2. Độ chính xác của thuật toán:......................................................................9
2.2.3. Nghiệm của thuật toán K-Means Clustering:............................................9
2.2.4. Tóm tắt thuật toán:...................................................................................10
CHƯƠNG 3 ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING...........11
3.1. Giới thiệu về Google colab:............................................................................11
3.2. Dữ liệu wine_red_quality:.............................................................................14
3.2.1. Phát biểu bài toán:....................................................................................14
3.2.2. Yêu cầu:...................................................................................................14
3.2.3. Bộ dữ liệu:...............................................................................................14
3.2.4. Tiến hành phân cụm.................................................................................16
KẾT LUẬN.............................................................................................................18
TI LIỆU THAM KHẢO.....................................................................................19
LỜI MỞ ĐẦU
Công nghệ ngày càng phổ biến không ai thể phủ nhận được tầm quan
trọng những hiệu quả đem lại cho cuộc sống chúng ta. Bất kỳ trong lĩnh
vực nào, sự góp mặt của trí tuệ nhân tạo sẽ giúp con người làm việc và hoàn thành
tốt công việc hơn. gần đây, một thuật ngữ “machine learning” rất được nhiều
người quan tâm.Thay phải code phần mềm với cách thức thủ công theo một bộ
hướng dẫn cụ thể nhằm hoàn thành một nhiệm vụ đề ra thì máy sẽ tự “học hỏi”
bằng cách sử dụng một lượng lớn dữ liệu cùng những thuật toán cho phép thực
hiện các tác vụ.
Đây là một lĩnh vực khoa học tuy không mới, nhưng cho thấy lĩnh vực trí tuệ
nhân tạo đang ngày càng phát triển thể tiến xa hơn trong tương lai. Đồng
thời, thời điểm này được xem một lĩnh vực “nóng” dành rất nhiều mối
quan tâm để phát triển nó một cách mạnh mẽ, bùng nổ hơn.
Hiện nay, việc quan tâm machine learning càng ngày càng tăng lên nhờ
machine learning giúp gia tăng dung lượng lưu trữ các loại dữ liệu sẵn, việc xử
lý tính toán có chi phí thấp và hiệu quả hơn rất nhiều.
Những điều trên được hiểu thể thực hiện tự động, nhanh chóng để
tạo ra những hình cho phép phân tích các dữ liệu quy lớn hơn phức
tạp hơn đồng thời đưa ra những kết quả một cách nhanh và chính xác hơn.
Chính sự hiệu quả trong công việc và các lợi ích vượt bậc mà nó đem lại cho chúng
ta khiến machine learning ngày càng được chú trọng và quan tâm nhiều hơn. Vì vậy
chúng em đã chọn đề tài ”Ứng dụng thuật toán K-Means Clustering để dự đoán
chất lượng của rượu vang đỏ.
Chúng em xin chân thành gửi lời cảm ơn tới thầy Văn Định đã tận tình
giảng dạy, truyền đạt cho chúng em những kiến thức cũng như kinh nghiệm quý
báu trong suốt quá trình học. Thầy đã tận tình theo sát giúp đỡ, trực tiếp chỉ bảo,
hướng dẫn trong suốt quá trình nghiên cứu và học tập của chúng em.
1
CHƯƠNG 1. TỔNG QUAN VỀ HỌC MÁY
1.1. Khái niệm về học máy:
Học máy (Machine learning) một lĩnh vực con của T tuệ nhân
tạo(Artificial Intelligence) sử dụng các thuật toán cho phép máy tính thể học từ
dữ liệu để thực hiện các công việc thay được lập trình một cách ràng, cung
cấp cho hệ thống khả năng tự động học hỏi và cải thiện hiệu suất, độ chính xác dựa
trên những kinh nghiệm từ dữ liệu đầu vào. Học máy tập trung vào việc phát triển
các phần mềm, chương trình máy tính thể truy cập vào dữ liệu tận dụng
nguồn dữ liệu đó để tự học.
Học máy vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu
cơ sở và lựa chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời, trước khi sử
dụng, dữ liệu phải sạch, không có sai lệch và không có dữ liệu giả.
Các mô hình học máy yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh
giá mô hình. Trước đây, các thuật toán học máy thiếu quyền truy cập vào một lượng
lớn dữ liệu cần thiết để hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng
trưởng trong (big data) đã cung cấp các thuật toán học máy với đủ dữdữ liệu lớn
liệu để cải thiện độ chính xác của mô hình và dự đoán.
1.2. Phân nhóm các thuật toán học máy
1.2.1 Học có giám sát (Supervised Learning)
Là phương pháp sử dụng những dữ liệu đã được gán nhãn từ trước để suy
luận ra quan hệ giữa đầu vào và đầu ra. Các dữ liệu này được gọi là dữ liệu huấn
luyện và chúng là cặp các đầu vào-đầu ra. Học có giám sát sẽ xem xét các tập huấn
luyện này để từ đó có thể đưa ra dự đoán đầu ra cho 1 đầu vào mới chưa gặp bao
giờ. Ví dụ dự đoán giá nhà, phân loại email. Các mô hình như mạng Nơ-ron, SVM,
2
CNN,…
Hình 1. 1. Mô hình học có giám sát
Supervised Learning Là thuât toán dự đoán đầu ra (outcome) của một dữ liệu
mới (new input) dựa trên cặp (input, outcome) đã biết tư trước. Cặp dữ liệu này còn
đươc gọi data, label tức dữ liệu, nhãn. Supervised Learning nhóm phổ biến
nhất trong các thuật toán Machine learning
1.2.2. Học phi giám sát (Unsupervised Learning)-UL
Khác với học có giám sát, học phi giám sát sử dụng những dữ liệu chưa được
gán nhãn từ trước để suy luận. Phương pháp này thường được sử dụng để tìm cấu
trúc của tập dữ liệu. Tuy nhiên lại không phương pháp đánh giá được cấu trúc
tìm ra được đúng hay sai. dụ như phân cụm dữ liệu, triết xuất thành phần
3
chính của một chất nào đó. K-mean Ứng dụng phổ biến nhất của học không giám
sát là gom cụm (cluster)
Hình 1. 2. Mô hình học không giám sát
Trong thuật toán này, chúng ta không biết được hay dữ liệu đầu ra nhãn
chỉ có dữ liệu đầu vào. Thuật toán Học không giám sát dựa vào cấu trúc của dữ liệu
để thực hiện một công việc nào đó, dụ như phân nhóm hoặc giảm số chiều của
dữ liệu để thuận tiện trong việc lưu trữ và tính toán.
Một cách toán học, Học không giám sát là khi chúng ta chỉ có dữ liệu vào X
mà không biết Y tương ứng.nhãn
Sự khác nhau giữa học có giám sát và học không giám sát:
4
Hình 1.3: Sự khác biệt giữa 2 mô hình SL và UL
Học giám sát: cách huấn luyện một hình trong đó dữ liệu học
đầu vào và đầu ra tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm
thiểu sai số lỗi (loss) của các dự đoán tại các vòng lặp huấn luyện. Sau quá trình
huấn luyện. mô hình sẽ có khả năng đưa ra dự đoán về đầu ra với một đầu vào mới
gặp (không có trong dữ liệu học). Nếu không gian đầu ra được biểu diễn dứới dạng
rời rạc, ta gọi đó là bài toán phân loại (classification). Nếu không gian đầu ra được
biểu diễn dưới dạng liên tục, ta gọi đó là bài toán hồi quy (regression).
Học không giám sát: cách huấn luyện một hình trong đó dữ liệu học
chỉ bao gồm đầu vào mà không có đầu ra. Mô hình sẽ được huấn luyện cách để tìm
cấu trúc hoặc mối quan hệ giữa các đầu vào. Một trong những phương pháp học
không giám sát quan trọng nhất phân cụm (clustering): Tạo các cụm khác nhau
với mỗi cụm biểu diễn một đặc trưng nào đó của dữ liệu phân các đầu vào mới
vào các cụm theo các đặc trưng của đầu vào đó. Các phương pháp học không giám
sát khác thể kể đến như: phát hiện điểm bất thường (anomaly detection),
Singular-value decomposition, …
1.2.3 Học tăng cường (reinforcement learning)
Phương pháp học tăng cường tập trung vào việc làm sao để cho 1 tác tử trong
môi trường thế hành động sao cho lấy được phần thưởng nhiều nhất thể.
Khác với học giám sát không cặp dữ liệu gán nhãn trước làm đầu vào và
cũng không có đánh giá các hành động là đúng hay sai.
1.2.4 Học bán giám sát (Semi-Supervised Learning)
Các bài toán khi chúng ta một lượng lớn dữ liệu X nhưng chỉ một phần
trong chúng được gán nhãn được gọi là Semi-Supervised Learning. Những bài toán
5
thuộc nhóm này nằm giữa hai nhóm được nêu bên trên. Một dụ điển hình của
nhóm này chỉ một phần ảnh hoặc văn bản được gán nhãn (ví dụ bức ảnh về
người, động vật hoặc các văn bản khoa học, chính trị) và phần lớn các bức ảnh/văn
bản khác chưa được gán nhãn được thu thập từ internet.
Thực tế cho thấy rất nhiều các bài toán Machine Learning thuộc vào nhóm
này việc thu thập dữ liệu nhãn tốn rất nhiều thời gian chi phí cao. Rất
nhiều loại dữ liệu thậm chí cần phải chuyên gia mới gán nhãn được (ảnh y học
chẳng hạn). Ngược lại, dữ liệu chưa nhãn thể được thu thập với chi phí thấp
từ internet.
1.3. Ứng dụng của học máy:
Nhiều hoạt động hàng ngày của chúng ta được trợ giúp bởi các thuật toán
machine learning, bao gồm:
Trong y tế: xác định bệnh lý của người bệnh mới dựa trên dữ liệu lịch sử của
các bệnh nhân cùng bệnh cùng các đặc điểm đã được chữa khỏi
trước đây, hay xác định loại thuốc phù hợp
Trong lĩnh vực ngân hàng: xác định khả năng khách hàng chậm trả các khoản
vay hoặc rủi ro tín dụng do nợ xấu dựa trên phân tích Credit score; xác định
xem liệu các giao dịch có hành vi phạm tội, lừa đảo hay không.
Trong giáo dục: phân loại các học sinh theo hoàn cảnh, học lực để xem xem
cần hỗ trợ cho những học sinh dụ như hoàn cảnh sống khó khăn nhưng
học lực lại tốt.
Trong thương mại điện tử: phân loại khách hàng theo sở thích cụ thể để hỗ
trợ personalized marketing hay xây dựng hệ thống khuyến nghị, dựa trên dữ
liệu từ website, social media.
6
Trong kinh tế nói chung: giúp dự báo các sự kiện kinh tế trong tương lai, dự
báo tình hình thời tiết trong nông nghiệp, xác định xu hướng thị trường
chứng khoán để lên kế hoạch đầu tư thích hợp.
7
CHƯƠNG 2 THUẬT TOÁN K-MEANS CLUSTERING TRONG BI TOÁN
PHÂN CỤM
2.1 Tổng quan về thuật toán K-Means Clustering
Với thuật toán K-Means Clustering, chúng ta không biết nhãn (label) của
từng điểm dữ liệu. Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster)
khác nhau sao cho dữ liệu trong cùng một cụm tính chất giống nhau. Ý tưởng
đơn giản nhất về cluster (cụm) tập hợp các điểm gần nhau trong một không
gian nào đó (không gian này có thể có rất nhiều chiều trong trường hợp thông tin về
một điểm dữ liệu là rất lớn). Hình bên dưới là một ví dụ về 3 cụm dữ liệu (từ giờ tôi
sẽ viết gọn là cluster).
Hình 2.1: Bài toán với 3 clusters
8
Giả sử mỗi cluster một điểm đại diện ( ) màu vàng. những điểmcenter
xung quanh mỗi center thuộc vào cùng nhóm với center đó. Một cách đơn giản
nhất, xét một điểm bất kỳ, ta xét xem điểm đó gần với center nào nhất thì nó thuộc
về cùng nhóm với center đó.
2.2. Thuật toán K-Means Clustering:
2.2.1. Mô hình toán học:
Ta gọi điểm tại vị trí trung bình của tất cả các điểm dữ liệu trong một cụm
. Như vậy, nếu có K cụm thì sẽ có K trung tâm cụm và mỗi trungtrung tâm cụm
tâm cụm sẽ nằm gần các điểm dữ liệu trong cụm tương ứng hơn các trung tâm cụm
khác. Trong hình dưới đây, K = 3 và ta có 3 trung tâm cụm là các điểm màu vàng.
Hình 2.2: Mô hình dữ liệu được phân cụm
9
Để phân cụm dữ liệu bằng K-Means Clustering, trước hết ta chọn K là số
cụm để phân chia và chọn ngẫu nhiên K trong số m dữ liệu ban đầu làm trung tâm
cụm μ1, μ2, …, μK. Sau đó, với điểm dữ liệu x(i) ta sẽ gán nó cho cụm c(i) là cụm
có trung tâm cụm gần nó nhất.
Khi tất cả các điểm dữ liệu đã được gán về các cụm, bước tiếp theo là tính toán lại
vị trí các trung tâm cụm bằng trung bình tọa độ các điểm dữ liệu trong cụm đó.
với k1, k2, …, kn là chỉ số các dữ liệu thuộc cụm thứ k. Các bước trên được lặp lại
cho tới khi vị trí các trung tâm cụm không đổi sau một bước lặp nào đó.
2.2.2. Độ chính xác của thuật toán:
Hàm mất mát của thuật toán K-Means Clustering đặc trưng cho độ chính xác
của sẽ càng lớn khi khoảng cách từ mỗi điểm dữ liệu tới trung tâm cụm càng
lớn.
2.2.3. Nghiệm của thuật toán K-Means Clustering:
Trong các bước của thuật toán, thực chất bước gán các điểm dữ liệu về trung
tâm cụm gần nhất và bước thay đổi trung tâm cụm về vị trí trung bình của các điểm
dữ liệu trong cụm đều nhằm mục đích giảm hàm mất mát. Thuật toán kết thúc khi
vị trí các trung tâm cụm không đổi sau một bước lặp nào đó. Khi đó hàm mất mát
đạt giá trị nhỏ nhất.
10
Khi K càng nhỏ so với m, thuật toán càng dễ đi đến kết quả chưa phải tối ưu.
Điều này phụ thuộc vào cách chọn K trung tâm cụm ban đầu.
Để khắc phục điều này, ta cần lặp lại thuật toán nhiều lần và chọn phương án
có giá trị hàm mất mát nhỏ nhất.
2.2.4. Tóm tắt thuật toán:
Đầu vào: Dữ liệu XX và số lượng cluster cần tìm KK.
Đầu ra: Các center MM và label vector cho từng điểm dữ liệu YY.
1. Chọn KK điểm bất kỳ làm các center ban đầu.
2. Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất.
3. Nếu việc gán dữ liệu vào từng cluster bước 2 không thay đổi so với
vòng lặp trước nó thì ta dừng thuật toán.
4. Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất
các các điểm dữ liệu đã được gán vào cluster đó sau bước 2.
5. Quay lại bước 2.
11
CHƯƠNG 3 ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING
3.1. Giới thiệu về Google colab:
Google Colaboratory Là Gì?
Google Colaboratory (gọi tắt là Google Colab hay Colab) là một sản phẩm của
Google Research. Colab dựa trên Jupyter Notebook, người dùng có thể viết và thực
thi đoạn mã python thông qua trình duyệt và đặc biệt rất phù hợp với data analysis,
machine learning và giáo dục.
Google đã phát hành Google Colab cho công chúng với mục đích cải thiện
giáo dục và nghiên cứu Machine Learning.
Google Colab cung cấp GPU miễn phí
Nhờ có sự phát triển mạnh mẽ của Machine learning và Deep learning trong
những năm gần đây không chỉ bởi các thuật toán, các mô hình tân tiến liên tiếp ra
đời mà còn bởi sự phát triển không ngừng của phần cứng, đặc biệt là GPU. Việc
tính toán về toán học cho Deep Learning trên CPU có thể mất hàng tháng! Nhưng
những tính toán này có thể được gán cho GPU để thực hiện nhanh hơn. Việc train
12
Neural Network trên CPU không được khuyến nghị. GPU cần thiết cho việc tính
toán ở mức độ cao.
Như chúng ta đều biết, GPU rất đắt tiền các nền tảng đám mây như AWS
GCP cũng vậy.
CPU GPU TPU
Bộ vi xử Intel
Xeon với hai lõi 2.30
GHz và 13 GB RAM
Card đồ họa VGA
Nvidia Tesla K80 với 12
GB VRAM GDDR5,
Bộ vi xử Intel Xeon
với hai lõi 2.20 GHz
13 GB RAM
Cloud TPU cho phép thực
hiện 180 nghìn tỷ phép
tính trong một giây,
Bộ vi xử Intel Xeon
với hai lõi 2.30 GHz
13 GB RAM
Có thể sử dụng GPU này để train Neural Network trên đám mây và tận hưởng
hiệu suất nhanh chóng, không có bất kỳ rắc rối nào, cũng như tập trung vào các vấn
đề hơn là đợi hàng giờ để train rồi điều chỉnh hoặc gỡ lỗi cho mô hình.
Hỗ trợ TPU cũng sẵn trên Colab. vẻ như Google Colab hiện cũng đang
cung cấp TPU, mặc hiện tại chưa ổn định. Tuy nhiên, bạn vẫn thể thử
nghiệm với nó.
Thao tác cơ bản trên Google Colab
13
Google Colab rất dễ dàng sử dụng, chỉ cần tạo sổ tay mới chạy đoạn
python mà bạn muốn. Nhưng trước hết nên setup GPU để chạy cho nhanh.
Chọn: Thời gian chạy > Thay đổi loại thời gian chạy > GPU
Giống như trình soạn thảo Jupyter Notebook, Colab thực thi python theo
từng ô từ trên xuống từng dòng trong ô. Chính vậy việc import library cũng
trở nên vô cùng đơn giản, dễ thực hiện.
14
Các thư viện python cơ bản đều được tích hợp sẵn trong Colab, nếu không
bạn thể dùng shell script bằng cách đặt dấu ! trước dòng script đó, và dùng !pip
install or !apt-get install để cài thôi. Shell script trên Colab y hệt như linux
command!
Ngoài ra Colab còn hỗ trợ git command, markdown, magics cell, LaTex,…
Trong quá trình sử dụng mình thấy hạn chế của Google Colab việc upload dữ
liệu lên Colab là khá chậm, nên đối với dữ liệu lớn ta có thể mount từ Google Drive
và sử dụng dễ dàng.
3.2. Dữ liệu wine_red_quality:
3.2.1. Phát biểu bài toán:
Bài toán phân loại chất lượng của rượu vang đỏ đưa ra các tập dự liệu là các
thông số của từng mẫu rượu vang đỏ để phân loại chất lượng của chúng
- Giá trị input: Thông tin, đặc tính của một mẫu rượu
- Giá trị output: tên của cụm chúng được phân vào
3.2.2. Yêu cầu:
- Lấy dữ liệu mô tả đặc tính rượu
- Trích chọn đặc trưng từ tập dữ liệu lấy được
- Xử lý, làm sạch dữ liệu
- Tiến hành phân cụm
- Dữ liệu hóa đồ thị
15
3.2.3. Bộ dữ liệu:
Nguồn: https://www.kaggle.com/uciml/red-wine-quality-cortez-et-al-2009
Bộ dữ liệu bao gồm các đặc trưng các nồng độ các thành phần ảnh hưởng
đển chất lượng của rượu, bao gồm:
- : độ acid cố địnhfixed acidity
- : độ acid dễ bay hơivolatile acidity
- : nồng độ citric acid được dùng để thêm độ tươi hương vịcitric acid
cho rượu vang
- residual sugar: lượng đường còn lại sau khi dừng lên men, thường lớn
hơn 1 gr/liter
- : độ mặn của rượu chlorides
- free sulfur dioxide: lượng chất SO2 còn tồn tại trạng thái cân bằng giữa
phân tử SO2 và bisulfite ion, nó ngăn cản vi sinh vật và sự oxi hóa ở rượu
- : số lượng các dạng S02 tự do ràng buộc; nồng độtotal sulfur dioxide
thấp, SO2 hầu như không thể phát hiện được trong rượu vang, nhưng nồng độ
SO2 tự do trên 50 ppm, SO2 trở nên rõ ràng trong mũi và mùi vị của rượu.
- : tỉ trọng của nướcdensity
- : là thước đo của tính axit và bazo trên thang điểm 0 -14pH
- : một chất phụ gia rượu vang thể góp phần vào mức khí sulfursulphates
dioxide (S02), hoạt động như một chất chống vi khuẩn và chất chống oxy hóa
- : nồng độ cồnalcohol
- : chất lượng (là kết quả của một số mẫu rượu được đánh giá dựa trênquality
vị giác của người thử rượu, tuy nhiên bài toán phân cụm không cần đến đặc trưng
này)
16
Hình 3.1: Dữ liệu cụ thể
3.2.4. Tiến hành phân cụm
IMPORT THƯ VIỆN:
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
ĐỌC FILE DỮ LIỆU CSV:
df = pd.read_csv('winequality-red.csv')
BỎ NHỮNG DỮ LIỆU BỊ LẶP
df = df.drop_duplicates()
CHUẨN HÓA DỮ LIỆU (MAX-MIN NORMALIZE):
def max_min_normalize(column):
maxx = max(column)
minn = min(column)
normalized_column = []
for value column:in
17
normalized_value = (value - minn)/(maxx - minn)
normalized_column.append(normalized_value)
return normalized_column
for column in df.columns:
try:
df[column] = max_min_normalize(df[column])
except ZeroDivisionError:
df[column] = 0
TẠO MODEL PHÂN CỤM DỮ LIỆU VÀ BIỂU DIỄN D LIỆU:
df = PCA(2).fit_transform(df)
clr = KMeans(n_clusters = 10,init = 'k-means++',random_state = 6)
clr.fit(df)
labels = clr.predict(df)
centroid_labels = clr.predict(clr.cluster_centers_)
predicted_df = pd.DataFrame(data = df,columns = ['PCA1','PCA2'])
predicted_df['Cluster'] = labels
centroid_df = pd.DataFrame( = clr.cluster_centers_,data columns = ['PCA1','PCA2'])
centroid_df['Cluster'] = centroid_labels
plt.scatter(predicted_df[ ],predicted_df['PCA1' 'PCA2'],c = labels,alpha = 0.5)
plt.scatter(centroid_df[ ],centroid_df['PCA1' 'PCA2'],marker = 'D', ,s = 100 c = cent
roid_labels)
plt.show()
18
Hình 3.2: Hình ảnh dữ liệu sau khi được phân cụm trên đồ thị
KẾT LUẬN
Trong quá trình thực hiện báo cáo của môn nhập môn học máy, chúng em đã
được biết thêm về các chương trình ứng dụng, các thuật toán và nắm bắt được phần
nào kiến thức về học máy.
Từ đó chúng em cố gắng áp dụng các kiến thức đã học vào làm báo cáo để
hoàn thiện đề tài của mình. Trong báo cáo của chúng em đã sử dụng thuật toán
19
phân cụm K-Means Clustering để dự đoán chất lượng của rượu vang đỏ. Dù đã rất
cố gắng để bài báo cáo hoàn thiện tốt nhất, song vì thời gian có hạn và tầm hiểu
biết còn rất hạn hẹp nên bài báo cáo của chúng em không tránh khỏi còn nhiều
thiếu sót. Chúng em rất hy vọng có sự góp ý của thầy cô, để báo cáo của chúng em
được hoàn thiện hơn nữa !
Chúng em xin chân thành cảm ơn.
20
TI LIỆU THAM KHẢO
[1] Trang web: machinelearningcoban.com
21
| 1/24

Preview text:

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NHẬP MÔN HỌC MÁY ĐỀ TI:
ỨNG DỤNG THUẬT TOÁN PHÂN CỤM KMEANS CLUSTERING
ĐỂ DỰ ĐOÁN CHẤT LƯỢNG CỦA RƯỢU VANG ĐỎ
Sinh viên thực hiện : NGUYỄN ĐỨC MINH : TRẦN VIỆT ANH
Giảng viên hướng dẫn : VŨ VĂN ĐỊNH Ngành
: CÔNG NGHỆ THÔNG TIN Chuyên ngành
: QUẢN TRỊ AN NINH MẠNG Lớp : D15QTANM Khóa : 2020-2025
Hà Nội, tháng 11 năm 2022 PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện Họ và tên Chữ ký Ghi Chú Nguyễn Đức Minh Trần Việt Anh Giảng viên chấm Họ và tên Chữ ký Ghi chú Giảng viên chấm 1 Giảng viên chấm 2 MỤC LỤC
CHƯƠNG 1. TỔNG QUAN VỀ HỌC MÁY.........................................................2
1.1. Khái niệm về học máy:....................................................................................2
1.2. Phân nhóm các thuật toán học máy..................................................................2
1.2.1 Học có giám sát (Supervised Learning)......................................................2
1.2.2. Học phi giám sát (Unsupervised Learning)-UL........................................3
1.2.3 Học tăng cường (reinforcement learning)...................................................5
1.2.4 Học bán giám sát (Semi-Supervised Learning)..........................................5
1.3. Ứng dụng của học máy:...................................................................................6
CHƯƠNG 2 THUẬT TOÁN K-MEANS CLUSTERING TRONG BI TOÁN
PHÂN CỤM
..............................................................................................................7
2.1 Tổng quan về thuật toán K-Means Clustering..................................................7
2.2. Thuật toán K-Means Clustering:......................................................................8
2.2.1. Mô hình toán học:......................................................................................8
2.2.2. Độ chính xác của thuật toán:......................................................................9
2.2.3. Nghiệm của thuật toán K-Means Clustering:............................................9
2.2.4. Tóm tắt thuật toán:...................................................................................10
CHƯƠNG 3 ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING...........11
3.1. Giới thiệu về Google colab:............................................................................11
3.2. Dữ liệu wine_red_quality:.............................................................................14
3.2.1. Phát biểu bài toán:....................................................................................14
3.2.2. Yêu cầu:...................................................................................................14
3.2.3. Bộ dữ liệu:...............................................................................................14
3.2.4. Tiến hành phân cụm.................................................................................16
KẾT LUẬN.............................................................................................................18
TI LIỆU THAM KHẢO.....................................................................................19 LỜI MỞ ĐẦU
Công nghệ ngày càng phổ biến và không ai có thể phủ nhận được tầm quan
trọng và những hiệu quả mà nó đem lại cho cuộc sống chúng ta. Bất kỳ trong lĩnh
vực nào, sự góp mặt của trí tuệ nhân tạo sẽ giúp con người làm việc và hoàn thành
tốt công việc hơn. Và gần đây, một thuật ngữ “machine learning” rất được nhiều
người quan tâm.Thay vì phải code phần mềm với cách thức thủ công theo một bộ
hướng dẫn cụ thể nhằm hoàn thành một nhiệm vụ đề ra thì máy sẽ tự “học hỏi”
bằng cách sử dụng một lượng lớn dữ liệu cùng những thuật toán cho phép nó thực hiện các tác vụ.
Đây là một lĩnh vực khoa học tuy không mới, nhưng cho thấy lĩnh vực trí tuệ
nhân tạo đang ngày càng phát triển và có thể tiến xa hơn trong tương lai. Đồng
thời, thời điểm này nó được xem là một lĩnh vực “nóng” và dành rất nhiều mối
quan tâm để phát triển nó một cách mạnh mẽ, bùng nổ hơn.
Hiện nay, việc quan tâm machine learning càng ngày càng tăng lên là vì nhờ
có machine learning giúp gia tăng dung lượng lưu trữ các loại dữ liệu sẵn, việc xử
lý tính toán có chi phí thấp và hiệu quả hơn rất nhiều.
Những điều trên được hiểu là nó có thể thực hiện tự động, nhanh chóng để
tạo ra những mô hình cho phép phân tích các dữ liệu có quy mô lớn hơn và phức
tạp hơn đồng thời đưa ra những kết quả một cách nhanh và chính xác hơn.
Chính sự hiệu quả trong công việc và các lợi ích vượt bậc mà nó đem lại cho chúng
ta khiến machine learning ngày càng được chú trọng và quan tâm nhiều hơn. Vì vậy
chúng em đã chọn đề tài ”Ứng dụng thuật toán K-Means Clustering để dự đoán
chất lượng của rượu vang đỏ.
Chúng em xin chân thành gửi lời cảm ơn tới thầy Vũ Văn Định đã tận tình
giảng dạy, truyền đạt cho chúng em những kiến thức cũng như kinh nghiệm quý
báu trong suốt quá trình học. Thầy đã tận tình theo sát giúp đỡ, trực tiếp chỉ bảo,
hướng dẫn trong suốt quá trình nghiên cứu và học tập của chúng em. 1
CHƯƠNG 1. TỔNG QUAN VỀ HỌC MÁY
1.1. Khái niệm về học máy:
Học máy (Machine learning) là một lĩnh vực con của Trí tuệ nhân
tạo(Artificial Intelligence) sử dụng các thuật toán cho phép máy tính có thể học từ
dữ liệu để thực hiện các công việc thay vì được lập trình một cách rõ ràng, cung
cấp cho hệ thống khả năng tự động học hỏi và cải thiện hiệu suất, độ chính xác dựa
trên những kinh nghiệm từ dữ liệu đầu vào. Học máy tập trung vào việc phát triển
các phần mềm, chương trình máy tính có thể truy cập vào dữ liệu và tận dụng
nguồn dữ liệu đó để tự học.
Học máy vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu
cơ sở và lựa chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời, trước khi sử
dụng, dữ liệu phải sạch, không có sai lệch và không có dữ liệu giả.
Các mô hình học máy yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh
giá mô hình. Trước đây, các thuật toán học máy thiếu quyền truy cập vào một lượng
lớn dữ liệu cần thiết để mô hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng
trưởng trong dữ liệu lớn (big data) đã cung cấp các thuật toán học máy với đủ dữ
liệu để cải thiện độ chính xác của mô hình và dự đoán.
1.2. Phân nhóm các thuật toán học máy
1.2.1 Học có giám sát (Supervised Learning)
Là phương pháp sử dụng những dữ liệu đã được gán nhãn từ trước để suy
luận ra quan hệ giữa đầu vào và đầu ra. Các dữ liệu này được gọi là dữ liệu huấn
luyện và chúng là cặp các đầu vào-đầu ra. Học có giám sát sẽ xem xét các tập huấn
luyện này để từ đó có thể đưa ra dự đoán đầu ra cho 1 đầu vào mới chưa gặp bao
giờ. Ví dụ dự đoán giá nhà, phân loại email. Các mô hình như mạng Nơ-ron, SVM, 2 CNN,…
Hình 1. 1. Mô hình học có giám sát
Supervised Learning Là thuât toán dự đoán đầu ra (outcome) của một dữ liệu
mới (new input) dựa trên cặp (input, outcome) đã biết tư trước. Cặp dữ liệu này còn
đươc gọi là data, label tức dữ liệu, nhãn. Supervised Learning Là nhóm phổ biến
nhất trong các thuật toán Machine learning
1.2.2. Học phi giám sát (Unsupervised Learning)-UL
Khác với học có giám sát, học phi giám sát sử dụng những dữ liệu chưa được
gán nhãn từ trước để suy luận. Phương pháp này thường được sử dụng để tìm cấu
trúc của tập dữ liệu. Tuy nhiên lại không có phương pháp đánh giá được cấu trúc
tìm ra được là đúng hay sai. Ví dụ như phân cụm dữ liệu, triết xuất thành phần 3
chính của một chất nào đó. K-mean Ứng dụng phổ biến nhất của học không giám sát là gom cụm (cluster)
Hình 1. 2. Mô hình học không giám sát
Trong thuật toán này, chúng ta không biết được dữ liệu đầu ra hay nhãn mà
chỉ có dữ liệu đầu vào. Thuật toán Học không giám sát dựa vào cấu trúc của dữ liệu
để thực hiện một công việc nào đó, ví dụ như phân nhóm hoặc giảm số chiều của
dữ liệu để thuận tiện trong việc lưu trữ và tính toán.
Một cách toán học, Học không giám sát là khi chúng ta chỉ có dữ liệu vào X
mà không biết nhãn Y tương ứng.
Sự khác nhau giữa học có giám sát và học không giám sát: 4
Hình 1.3: Sự khác biệt giữa 2 mô hình SL và UL
Học có giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học có
đầu vào và đầu ra tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm
thiểu sai số lỗi (loss) của các dự đoán tại các vòng lặp huấn luyện. Sau quá trình
huấn luyện. mô hình sẽ có khả năng đưa ra dự đoán về đầu ra với một đầu vào mới
gặp (không có trong dữ liệu học). Nếu không gian đầu ra được biểu diễn dứới dạng
rời rạc, ta gọi đó là bài toán phân loại (classification). Nếu không gian đầu ra được
biểu diễn dưới dạng liên tục, ta gọi đó là bài toán hồi quy (regression).
Học không giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học
chỉ bao gồm đầu vào mà không có đầu ra. Mô hình sẽ được huấn luyện cách để tìm
cấu trúc hoặc mối quan hệ giữa các đầu vào. Một trong những phương pháp học
không giám sát quan trọng nhất là phân cụm (clustering): Tạo các cụm khác nhau
với mỗi cụm biểu diễn một đặc trưng nào đó của dữ liệu và phân các đầu vào mới
vào các cụm theo các đặc trưng của đầu vào đó. Các phương pháp học không giám
sát khác có thể kể đến như: phát hiện điểm bất thường (anomaly detection),
Singular-value decomposition, …
1.2.3 Học tăng cường (reinforcement learning)
Phương pháp học tăng cường tập trung vào việc làm sao để cho 1 tác tử trong
môi trường có thế hành động sao cho lấy được phần thưởng nhiều nhất có thể.
Khác với học có giám sát nó không có cặp dữ liệu gán nhãn trước làm đầu vào và
cũng không có đánh giá các hành động là đúng hay sai.
1.2.4 Học bán giám sát (Semi-Supervised Learning)
Các bài toán khi chúng ta có một lượng lớn dữ liệu X nhưng chỉ một phần
trong chúng được gán nhãn được gọi là Semi-Supervised Learning. Những bài toán 5
thuộc nhóm này nằm giữa hai nhóm được nêu bên trên. Một ví dụ điển hình của
nhóm này là chỉ có một phần ảnh hoặc văn bản được gán nhãn (ví dụ bức ảnh về
người, động vật hoặc các văn bản khoa học, chính trị) và phần lớn các bức ảnh/văn
bản khác chưa được gán nhãn được thu thập từ internet.
Thực tế cho thấy rất nhiều các bài toán Machine Learning thuộc vào nhóm
này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian và có chi phí cao. Rất
nhiều loại dữ liệu thậm chí cần phải có chuyên gia mới gán nhãn được (ảnh y học
chẳng hạn). Ngược lại, dữ liệu chưa có nhãn có thể được thu thập với chi phí thấp từ internet.
1.3. Ứng dụng của học máy:
Nhiều hoạt động hàng ngày của chúng ta được trợ giúp bởi các thuật toán machine learning, bao gồm:
Trong y tế: xác định bệnh lý của người bệnh mới dựa trên dữ liệu lịch sử của
các bệnh nhân có cùng bệnh lý có cùng các đặc điểm đã được chữa khỏi
trước đây, hay xác định loại thuốc phù hợp
Trong lĩnh vực ngân hàng: xác định khả năng khách hàng chậm trả các khoản
vay hoặc rủi ro tín dụng do nợ xấu dựa trên phân tích Credit score; xác định
xem liệu các giao dịch có hành vi phạm tội, lừa đảo hay không.
Trong giáo dục: phân loại các học sinh theo hoàn cảnh, học lực để xem xem
cần hỗ trợ gì cho những học sinh ví dụ như hoàn cảnh sống khó khăn nhưng học lực lại tốt.
Trong thương mại điện tử: phân loại khách hàng theo sở thích cụ thể để hỗ
trợ personalized marketing hay xây dựng hệ thống khuyến nghị, dựa trên dữ
liệu từ website, social media. 6
Trong kinh tế nói chung: giúp dự báo các sự kiện kinh tế trong tương lai, dự
báo tình hình thời tiết trong nông nghiệp, xác định xu hướng thị trường
chứng khoán để lên kế hoạch đầu tư thích hợp. 7
CHƯƠNG 2 THUẬT TOÁN K-MEANS CLUSTERING TRONG BI TOÁN PHÂN CỤM
2.1 Tổng quan về thuật toán K-Means Clustering
Với thuật toán K-Means Clustering, chúng ta không biết nhãn (label) của
từng điểm dữ liệu. Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster)
khác nhau sao cho dữ liệu trong cùng một cụm có tính chất giống nhau. Ý tưởng
đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau trong một không
gian nào đó (không gian này có thể có rất nhiều chiều trong trường hợp thông tin về
một điểm dữ liệu là rất lớn). Hình bên dưới là một ví dụ về 3 cụm dữ liệu (từ giờ tôi
sẽ viết gọn là cluster).
Hình 2.1: Bài toán với 3 clusters 8
Giả sử mỗi cluster có một điểm đại diện (center) màu vàng. Và những điểm
xung quanh mỗi center thuộc vào cùng nhóm với center đó. Một cách đơn giản
nhất, xét một điểm bất kỳ, ta xét xem điểm đó gần với center nào nhất thì nó thuộc
về cùng nhóm với center đó.
2.2. Thuật toán K-Means Clustering: 2.2.1. Mô hình toán học:
Ta gọi điểm tại vị trí trung bình của tất cả các điểm dữ liệu trong một cụm
trung tâm cụm. Như vậy, nếu có K cụm thì sẽ có K trung tâm cụm và mỗi trung
tâm cụm sẽ nằm gần các điểm dữ liệu trong cụm tương ứng hơn các trung tâm cụm
khác. Trong hình dưới đây, K = 3 và ta có 3 trung tâm cụm là các điểm màu vàng.
Hình 2.2: Mô hình dữ liệu được phân cụm 9
Để phân cụm dữ liệu bằng K-Means Clustering, trước hết ta chọn K là số
cụm để phân chia và chọn ngẫu nhiên K trong số m dữ liệu ban đầu làm trung tâm
cụm μ1, μ2, …, μK. Sau đó, với điểm dữ liệu x(i) ta sẽ gán nó cho cụm c(i) là cụm
có trung tâm cụm gần nó nhất.
Khi tất cả các điểm dữ liệu đã được gán về các cụm, bước tiếp theo là tính toán lại
vị trí các trung tâm cụm bằng trung bình tọa độ các điểm dữ liệu trong cụm đó.
với k1, k2, …, kn là chỉ số các dữ liệu thuộc cụm thứ k. Các bước trên được lặp lại
cho tới khi vị trí các trung tâm cụm không đổi sau một bước lặp nào đó.
2.2.2. Độ chính xác của thuật toán:
Hàm mất mát của thuật toán K-Means Clustering đặc trưng cho độ chính xác
của nó sẽ càng lớn khi khoảng cách từ mỗi điểm dữ liệu tới trung tâm cụm càng lớn.
2.2.3. Nghiệm của thuật toán K-Means Clustering:
Trong các bước của thuật toán, thực chất bước gán các điểm dữ liệu về trung
tâm cụm gần nhất và bước thay đổi trung tâm cụm về vị trí trung bình của các điểm
dữ liệu trong cụm đều nhằm mục đích giảm hàm mất mát. Thuật toán kết thúc khi
vị trí các trung tâm cụm không đổi sau một bước lặp nào đó. Khi đó hàm mất mát
đạt giá trị nhỏ nhất. 10
Khi K càng nhỏ so với m, thuật toán càng dễ đi đến kết quả chưa phải tối ưu.
Điều này phụ thuộc vào cách chọn K trung tâm cụm ban đầu.
Để khắc phục điều này, ta cần lặp lại thuật toán nhiều lần và chọn phương án
có giá trị hàm mất mát nhỏ nhất.
2.2.4. Tóm tắt thuật toán:
Đầu vào: Dữ liệu XX và số lượng cluster cần tìm KK.
Đầu ra: Các center MM và label vector cho từng điểm dữ liệu YY. 1.
Chọn KK điểm bất kỳ làm các center ban đầu. 2.
Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất. 3.
Nếu việc gán dữ liệu vào từng cluster ở bước 2 không thay đổi so với
vòng lặp trước nó thì ta dừng thuật toán. 4.
Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất
các các điểm dữ liệu đã được gán vào cluster đó sau bước 2. 5. Quay lại bước 2. 11
CHƯƠNG 3 ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING
3.1. Giới thiệu về Google colab:
Google Colaboratory Là Gì?
Google Colaboratory (gọi tắt là Google Colab hay Colab) là một sản phẩm của
Google Research. Colab dựa trên Jupyter Notebook, người dùng có thể viết và thực
thi đoạn mã python thông qua trình duyệt và đặc biệt rất phù hợp với data analysis,
machine learning và giáo dục.
Google đã phát hành Google Colab cho công chúng với mục đích cải thiện
giáo dục và nghiên cứu Machine Learning.
Google Colab cung cấp GPU miễn phí
Nhờ có sự phát triển mạnh mẽ của Machine learning và Deep learning trong
những năm gần đây không chỉ bởi các thuật toán, các mô hình tân tiến liên tiếp ra
đời mà còn bởi sự phát triển không ngừng của phần cứng, đặc biệt là GPU. Việc
tính toán về toán học cho Deep Learning trên CPU có thể mất hàng tháng! Nhưng
những tính toán này có thể được gán cho GPU để thực hiện nhanh hơn. Việc train 12
Neural Network trên CPU không được khuyến nghị. GPU cần thiết cho việc tính toán ở mức độ cao.
Như chúng ta đều biết, GPU rất đắt tiền và các nền tảng đám mây như AWS và GCP cũng vậy. CPU GPU TPU Card đồ họa VGA
Bộ vi xử lý Intel Nvidia Tesla K80 với 12 Cloud TPU cho phép thực
Xeon với hai lõi 2.30 GB VRAM GDDR5, hiện 180 nghìn tỷ phép GHz và 13 GB RAM
Bộ vi xử lý Intel Xeon tính trong một giây,
với hai lõi 2.20 GHz và Bộ vi xử lý Intel Xeon 13 GB RAM với hai lõi 2.30 GHz và 13 GB RAM
Có thể sử dụng GPU này để train Neural Network trên đám mây và tận hưởng
hiệu suất nhanh chóng, không có bất kỳ rắc rối nào, cũng như tập trung vào các vấn
đề hơn là đợi hàng giờ để train rồi điều chỉnh hoặc gỡ lỗi cho mô hình.
Hỗ trợ TPU cũng có sẵn trên Colab. Có vẻ như Google Colab hiện cũng đang
cung cấp TPU, mặc dù hiện tại nó chưa ổn định. Tuy nhiên, bạn vẫn có thể thử nghiệm với nó.
Thao tác cơ bản trên Google Colab 13
Google Colab rất dễ dàng sử dụng, chỉ cần tạo sổ tay mới và chạy đoạn mã
python mà bạn muốn. Nhưng trước hết nên setup GPU để chạy cho nhanh.
Chọn: Thời gian chạy > Thay đổi loại thời gian chạy > GPU
Giống như trình soạn thảo Jupyter Notebook, Colab thực thi mã python theo
từng ô từ trên xuống và từng dòng trong ô. Chính vì vậy việc import library cũng
trở nên vô cùng đơn giản, dễ thực hiện. 14
Các thư viện python cơ bản đều được tích hợp sẵn trong Colab, nếu không có
bạn có thể dùng shell script bằng cách đặt dấu ! trước dòng script đó, và dùng !pip
install or !apt-get install để cài thôi. Shell script trên Colab y hệt như linux command!
Ngoài ra Colab còn hỗ trợ git command, markdown, magics cell, LaTex,…
Trong quá trình sử dụng mình thấy hạn chế của Google Colab là việc upload dữ
liệu lên Colab là khá chậm, nên đối với dữ liệu lớn ta có thể mount từ Google Drive và sử dụng dễ dàng.
3.2. Dữ liệu wine_red_quality:
3.2.1. Phát biểu bài toán:
Bài toán phân loại chất lượng của rượu vang đỏ đưa ra các tập dự liệu là các
thông số của từng mẫu rượu vang đỏ để phân loại chất lượng của chúng
- Giá trị input: Thông tin, đặc tính của một mẫu rượu
- Giá trị output: tên của cụm chúng được phân vào 3.2.2. Yêu cầu:
- Lấy dữ liệu mô tả đặc tính rượu
- Trích chọn đặc trưng từ tập dữ liệu lấy được
- Xử lý, làm sạch dữ liệu - Tiến hành phân cụm - Dữ liệu hóa đồ thị 15 3.2.3. Bộ dữ liệu:
Nguồn: https://www.kaggle.com/uciml/red-wine-quality-cortez-et-al-2009
Bộ dữ liệu bao gồm các đặc trưng là các nồng độ các thành phần ảnh hưởng
đển chất lượng của rượu, bao gồm:
- fixed acidity: độ acid cố định
- volatile acidity: độ acid dễ bay hơi
- citric acid: nồng độ citric acid – được dùng để thêm độ tươi và hương vị cho rượu vang
- residual sugar: lượng đường còn dư lại sau khi dừng lên men, thường lớn hơn 1 gr/liter
- chlorides: độ mặn của rượu
- free sulfur dioxide: lượng chất SO2 còn tồn tại ở trạng thái cân bằng giữa
phân tử SO2 và bisulfite ion, nó ngăn cản vi sinh vật và sự oxi hóa ở rượu
- total sulfur dioxide: số lượng các dạng S02 tự do và ràng buộc; ở nồng độ
thấp, SO2 hầu như không thể phát hiện được trong rượu vang, nhưng ở nồng độ
SO2 tự do trên 50 ppm, SO2 trở nên rõ ràng trong mũi và mùi vị của rượu.
- density: tỉ trọng của nước
- pH: là thước đo của tính axit và bazo trên thang điểm 0 -14
- sulphates: một chất phụ gia rượu vang có thể góp phần vào mức khí sulfur
dioxide (S02), hoạt động như một chất chống vi khuẩn và chất chống oxy hóa - alcohol: nồng độ cồn - :
quality chất lượng (là kết quả của một số mẫu rượu được đánh giá dựa trên
vị giác của người thử rượu, tuy nhiên bài toán phân cụm không cần đến đặc trưng này) 16
Hình 3.1: Dữ liệu cụ thể
3.2.4. Tiến hành phân cụm IMPORT THƯ VIỆN: import pandas as pd import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA ĐỌC FILE DỮ LIỆU CSV:
df = pd.read_csv('winequality-red.csv')
BỎ NHỮNG DỮ LIỆU BỊ LẶP df = df.drop_duplicates()
CHUẨN HÓA DỮ LIỆU (MAX-MIN NORMALIZE): def max_min_normalize(column): maxx = max(column) minn = min(column) normalized_column = [] for value in column: 17
normalized_value = (value - minn)/(maxx - minn)
normalized_column.append(normalized_value) return normalized_column for column in df.columns: try:
df[column] = max_min_normalize(df[column]) except ZeroDivisionError: df[column] = 0
TẠO MODEL PHÂN CỤM DỮ LIỆU VÀ BIỂU DIỄN DỮ LIỆU: df = PCA(2).fit_transform(df)
clr = KMeans(n_clusters = 10,init = 'k-means++',random_state = 6) clr.fit(df) labels = clr.predict(df)
centroid_labels = clr.predict(clr.cluster_centers_)
predicted_df = pd.DataFrame(data = df,columns = ['PCA1','PCA2'])
predicted_df['Cluster'] = labels
centroid_df = pd.DataFrame(data = clr.cluster_centers_,columns = ['PCA1','PCA2'])
centroid_df['Cluster'] = centroid_labels
plt.scatter(predicted_df['PCA1'],predicted_df['PCA2'],c = labels,alpha = 0.5)
plt.scatter(centroid_df['PCA1'],centroid_df['PCA2'],marker = 'D',s = , 100 c = cent roid_labels) plt.show() 18
Hình 3.2: Hình ảnh dữ liệu sau khi được phân cụm trên đồ thị KẾT LUẬN
Trong quá trình thực hiện báo cáo của môn nhập môn học máy, chúng em đã
được biết thêm về các chương trình ứng dụng, các thuật toán và nắm bắt được phần
nào kiến thức về học máy.
Từ đó chúng em cố gắng áp dụng các kiến thức đã học vào làm báo cáo để
hoàn thiện đề tài của mình. Trong báo cáo của chúng em đã sử dụng thuật toán 19
phân cụm K-Means Clustering để dự đoán chất lượng của rượu vang đỏ. Dù đã rất
cố gắng để bài báo cáo hoàn thiện tốt nhất, song vì thời gian có hạn và tầm hiểu
biết còn rất hạn hẹp nên bài báo cáo của chúng em không tránh khỏi còn nhiều
thiếu sót. Chúng em rất hy vọng có sự góp ý của thầy cô, để báo cáo của chúng em
được hoàn thiện hơn nữa !
Chúng em xin chân thành cảm ơn. 20
TI LIỆU THAM KHẢO
[1] Trang web: machinelearningcoban.com 21