Professional Documents
Culture Documents
ĐỒ ÁN MÔN HỌC
1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN MÔN HỌC
2
TRƯỜ NG ĐẠ I HỌ C NGUYỄ N TẤ T THÀ NH CỘ NG HÒ A XÃ HỘ I CHỦ NGHĨA VIỆ T NAM
KHOA CÔNG NGHỆ THÔNG TIN Độc lập – Tự do – Hạnh phúc
🙜 🙜 🙝 🙜 🙜 🙝
3
LỜI CẢM ƠN
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở Khoa Công Nghệ Thông
Tin đã truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập online
tại trường. Nhờ có những lời hướng dẫn, dạy bảo của thầy cô nên đề tài thiết kế của em
mới có thể hoàn thiện tốt đẹp.
Một lần nữa, em xin chân thành cảm ơn thầy Hồ Ngọc Trung Kiên – người đã trực tiếp
giúp đỡ, quan tâm, hướng dẫn em hoàn thành tốt bài báo cáo này trong thời gian qua.
Bài báo cáo của em còn hạn chế và còn nhiều bỡ ngỡ nên không tránh khỏi những thiếu
sót, em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy để kiến thức
của em trong lĩnh vực này được hoàn thiện hơn đồng thời có điều kiện bổ sung, nâng cao
ý thức của mình.
Em xin chân thành cảm ơn!
4
LỜI MỞ ĐẦU
Bệnh tim mạch là do các rối loạn liên quan đến tim và mạch máu. Bệnh tim mạch bao
gồm bệnh mạch vành (nhồi máu cơ tim), tai biến mạch máu não (đột quỵ), tăng huyết áp
(cao huyết áp), bệnh động mạch ngoại biên, bệnh thấp tim, bệnh tim bẩm sinh và suy tim.
Các nguyên nhân chính của bệnh tim mạch là do sử dụng thuốc lá, thiếu các hoạt động
thể lực, chế độ ăn uống không lành mạnh và sử dụng rượu bia ở mức độ nguy hại. Theo
các chuyên gia về y khoa, hầu hết các bệnh về tim mạch có thể phòng ngừa được bằng
cách kiểm soát tốt các yếu tố nguy cơ dẫn đến bệnh này.
Trong những năm gần đây, máy học phát triển mạnh và được ứng dụng vào nhiều lĩnh
vực của đời sống xã hội, trong đó có lĩnh vực y khoa do nhu cầu cao về phân tích dữ liệu
để phát hiện các thông tin không xác định và có giá trị được hàm chứa trong các bộ dữ
liệu y khoa. Trong số các kỹ thuật học máy được phát triển gần đây như khái quát hóa,
đặc tính hóa, phân loại, phân cụm, kết hợp, so khớp mẫu, trực quan hóa dữ liệu,…Việc
học máy được áp dụng vào lĩnh vực y khoa cho một số lợi ích như phát hiện sớm các
bệnh, giúp đưa ra giải pháp y tế cho bệnh nhân lựa chọn, phát hiện nguyên nhân bệnh,
xác định và tư vấn các phương pháp y tế có thể sử dụng để điều trị bệnh. Học máy cũng
giúp các nhà nghiên cứu chăm sóc sức khỏe thực hiện các chính sách chăm sóc sức khỏe
hiệu quả, xây dựng hệ thống khuyến cáo thuốc, phát triển hồ sơ y tế của các cá nhân, ...
Các kỹ thuật học máy được áp dụng trong các hệ thống dựa trên bộ dữ liệu thu thập được
đưa ra dự đoán chuẩn xác cho các bệnh nhân có thể nhận biết được không hoặc đang mắc
bệnh và kịp thời phòng tránh và chữa trị.
5
NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY
6
BẢNG PHÂN CÔNG THỰC HIỆN ĐỒ ÁN MÔN HỌC
7
Nguyễn Văn Thống - 2000004391 Phan Hoài Ngọc - 2000004730
- Code và chạ y cá c thuậ t toá n - Tìm nguồ n dữ liệu nghiên cứ u
- Phâ n tích dữ liệu - Tìm cá c bà i bá o liên quan
- Viết World - Viết World
- Viết PowerPoint - Viết PowerPoint
- Lự a chọ n thuậ t toá n - Lự a chọ n thuậ t toá n
Điểm A: Điểm B:
Nhậ n xét: Nhậ n xét:
8
Mục Lục
LỜI CẢM ƠN.................................................................................................................... 4
LỜI MỞ ĐẦU....................................................................................................................5
Chương I. Tổng Quan Đề Tài.............................................................................................1
1.1 Tổng quan....................................................................................................................1
1.2 Lý do chọn đề tài..........................................................................................................2
1.3 Mục Tiêu Nghiên Cứu..................................................................................................2
1.4 Đối tượng nghiên cứu...................................................................................................2
Chương II. Cơ Sở Lý Thuyết & Các Nghiên Cứu Liên Quan............................................3
2.1 Nghiên cứu trong nước.................................................................................................3
2.2 Nghiên cứu ngoài nước................................................................................................4
2.3 Cơ sở lý thuyết.............................................................................................................6
2.3.1 quy trình khai phá tri thức......................................................................................6
2.3.2 Machine Learning là gì..........................................................................................7
2.3.3. Phân loại Machine learning...................................................................................7
2.3.4. Supervised learning...............................................................................................8
2.3.5. Unsupervised learning...........................................................................................8
Chương III. Xây Dựng Mô Hình........................................................................................9
3.1 Mô hình........................................................................................................................9
3.2 Các bước xây dựng mô hình.........................................................................................9
3.2.1 Dataset...................................................................................................................9
3.2.2 Tiền xử lí dữ liệu..................................................................................................10
3.2.3 Chia dữ liệu..........................................................................................................10
3.2.4 Áp dụng model.....................................................................................................10
3.2.5 Dự đoán độ chính xác và Chuẩn đoán..................................................................11
3.3 Giới thệu về các thuật toán được sử dụng...................................................................11
3.3.1 Thuật toán naïve bayes.........................................................................................11
3.3.1.1 Naïve bayes là gì ?.........................................................................................11
3.3.1.2 Suy luận theo kiểu Naive Bayes....................................................................11
3.3.1.3 Phát biểu định lý............................................................................................11
9
3.3.1.4 Công thức......................................................................................................12
3.3.2 Thuật toán Logistic..............................................................................................12
3.3.2.1 Hồi quy logistic là gì?....................................................................................12
3.3.2.2 Cách thức hoạt động......................................................................................12
3.3.2.3 Phương trình..................................................................................................12
3.3.2.4 Biến...............................................................................................................13
3.3.2.5 Công thức......................................................................................................13
3.3.3 Linear Discriminant Analysis (LDA)...................................................................15
3.3.3.1 LDA là gì ?....................................................................................................15
3.3.3.2 ý nghĩa...........................................................................................................15
3.3.4 KneighborsClassifier............................................................................................15
3.3.4.1 knn là gì ?......................................................................................................15
Chương IV. Thực Nghiệm Và Đánh Giá..........................................................................16
4.1 Mô tả dữ liệu..............................................................................................................16
4.2 Xử lý dữ liệu..............................................................................................................18
4.3 Chia dữ liệu................................................................................................................21
4.4 Áp dụng thuật toán.....................................................................................................23
4.5 Thực nghiệm..............................................................................................................23
4.5.1 Thực nghiệm 1.....................................................................................................23
4.5.2 Thực nghiệm 2.....................................................................................................24
4.5.3 Thực nghiệm 3.....................................................................................................24
4.4 Đánh giá và so sánh các tiêu chí.................................................................................27
Chương V. Kết luận.........................................................................................................30
Tài liệu tham khảo............................................................................................................31
10
DANH MỤC CÁC BẢNG HÌNH
Hình 13: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu
Hình 14: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu
11
DANH MỤC CÁC TỪ VIẾT TẮT
12
Chương I. Tổng Quan Đề Tài
Bệnh tim mạch là do các rối loạn liên quan đến tim và mạch máu. Bệnh tim mạch bao
gồm bệnh mạch vành (nhồi máu cơ tim), tai biến mạch máu não (đột quỵ), tăng huyết áp
(cao huyết áp), bệnh động mạch ngoại biên, bệnh thấp tim, bệnh tim bẩm sinh và suy tim.
Các nguyên nhân chính của bệnh tim mạch là do sử dụng thuốc lá, thiếu các hoạt động thể
lực, chế độ ăn uống không lành mạnh và sử dụng rượu bia ở mức độ nguy hại. Theo các
chuyên gia về y khoa, hầu hết các bệnh về tim mạch có thể phòng ngừa được bằng cách
kiểm soát tốt các yếu tố nguy cơ dẫn đến bệnh này. Theo báo cáo của tổ chức y tế thế giới
(WHO), bệnh tim mạch là nguyên nhân hàng đầu gây nên tử vong trên toàn cầu, chiếm tới
31% tổng số ca tử vong. Tại Việt Nam, cũng theo báo cáo bệnh tim mạch chiếm đến 31%
tổng số ca tử vong trong năm 2016 tương đương với hơn 170.000 ca tử vong.
Trong những năm gần đây, máy học phát triển mạnh và được ứng dụng vào nhiều
lĩnh vực của đời sống xã hội, trong đó có lĩnh vực y khoa do nhu cầu cao về phân tích dữ
liệu để phát hiện các thông tin không xác định và có giá trị được hàm chứa trong các bộ dữ
liệu y khoa. Trong số các kỹ thuật học máy được phát triển gần đây như khái quát hóa, đặc
tính hóa, phân loại, phân cụm, kết hợp, so khớp mẫu, trực quan hóa dữ liệu, v.v. Việc học
máy được áp dụng vào lĩnh vực y khoa cho một số lợi ích như phát hiện sớm các bệnh,
giúp đưa ra giải pháp y tế cho bệnh nhân lựa chọn, phát hiện nguyên nhân bệnh, xác định
và tư vấn các phương pháp y tế có thể sử dụng để điều trị bệnh. Học máy cũng giúp các
nhà nghiên cứu chăm sóc sức khỏe thực hiện các chính sách chăm sóc sức khỏe hiệu quả,
xây dựng hệ thống khuyến cáo thuốc, phát triển hồ sơ y tế của các cá nhân, ... Các kỹ thuật
học máy được áp dụng trong các hệ thống chăm sóc sức khỏe cũng được sử dụng để phân
tích các yếu tố khác nhau như loại thực phẩm, môi trường làm việc khác nhau, trình độ học
vấn, điều kiện sống, nguồn nước sạch, dịch vụ chăm sóc sức khỏe, văn hóa và môi trường
ảnh hưởng đối với các bệnh.
1
1.2 Lý do chọn đề tài
Hiện nay kỹ thuật học máy đã ngày càng phát triển và có được ứng dụng vô cùng lớn
vào các lĩnh vực khác nhau như ngân hàng, thư tín, báo chí, y học,…Mà trong y học thì kỹ
thuật học máy dựa trên bộ dữ liệu được thu thập từ nhiều bệnh nhân trước đó có thể được
sử dụng để huấn luyện và đưa ra dự đoán bệnh đối với các bệnh nhân có thể biết được bản
thân có mắc bệnh hay không, nhằm phục vụ cho việc phát hiện kịp thời để chữa trị và
phòng tránh các nguy cơ rủi ro có thể xảy đến vì vậy em quyết định chọn đề tài áp dụng
học máy vào y học sử dụng Thuật Toán Naïve Bayes Để Dự Đoán Bệnh Tim.
2
Chương II. Cơ Sở Lý Thuyết & Các Nghiên Cứu Liên Quan
3
Thuật toán được sử dụng: SVM, Decision Tree
Bài báo này khảo sát một số các kỹ thuật khai phá dữ liệu (KPDL) thường được sử
dụng trong hệ thống chăm sóc sức khỏe thông minh (E-Health Care Systems). Tại Việt
Nam, việc ứng dụng KPDL trong lĩnh vực y khoa còn nhiều hạn chế đặc biệt là việc tiếp
cận và thu thập dữ liệu bệnh nhân. Trong khảo sát này, chúng tôi tiến hành hai thực
nghiệm áp dụng một số phương pháp học có giám sát để phân loại bệnh trên ba bộ dữ liệu
cận lâm sàng là bệnh tim, bệnh thận mãn tính và ung thư vú, trong đó Thực nghiệm 1
chúng tôi tiến hành kiểm tra đặc tính của dữ liệu có phân bố tuyến tính hay phi tuyến, Thực
nghiệm 2 tiến hành phân loại bệnh và so sánh các kết quả đạt được. Từ đó đánh giá tính
hiệu quả việc của các kỹ thuật trên từng bộ dữ liệu khác nhau.
Kết quả đạt được:
Bệnh tim :
Độ chính xác bằng thuật toán SVM 89,93%.
Độ chính xác bằng thuật toán Decision Tree 99,28%.
Bệnh thận mãn tính:
Độ chính xác bằng thuật toán SVM 72,50%.
Độ chính xác bằng thuật toán 93,75%.
Bệnh ung thư vú :
Độ chính xác bằng thuật toán SVM 82,61%.
Độ chính xác bằng thuật toán 69,5%.
2.3 Cơ sở lý thuyết
6
Hình 1: Quy trình khai phá tri thức
8
Chương III. Xây Dựng Mô Hình
3.1 Mô hình
Cấu hình máy thực hiện: Các thuật toán được thực hiện trên google colab và sử dụng máy
Asus ROG Strix G513IE.
3.2.1 Dataset
Bộ dữ liệu được lấy từ : https://www.kaggle.com/datasets/johnsmith88/heart-disease-
dataset
Tập dữ liệu này có từ năm 1988 và bao gồm bốn cơ sở dữ liệu: Cleveland, Hungary,
Thụy Sĩ và Long Beach V. Tập dữ liệu này chứa 76 thuộc tính, bao gồm cả thuộc tính dự
đoán, nhưng tất cả các thử nghiệm đã xuất bản đều đề cập đến việc sử dụng một tập hợp
9
con gồm 14 trong số đó. Trường "mục tiêu" đề cập đến sự hiện diện của bệnh tim ở bệnh
nhân. Nó là số nguyên có giá trị 0 = không bệnh và 1 = bệnh.
10
Các thuật toán được sử dụng là : LogisticRegression, LinearDiscriminantAnalysis,
NaïveBayesGaussian, K neighbors Classifier
P ( C|X ) P(C)
P ( C| X )= 11
P( X)
Hình 3: công thức naïve bayes
Trong đó:
P(C|X) Xác suất của giả thuyết C đúng khi có chứng cứ X
P(X|C) Xác suất nhìn thấy chứng cứ X khi biết giả thuyết C đúng
P(C) Xác suất của giả thuyết C đúng (khi chưa có chứng cứ X)
P(X) Xác suất quan sát được chứng cứ X
3.3.2.4 Biến
Trong thống kê, biến là các yếu tố dữ liệu hoặc thuộc tính có giá trị khác nhau. Bất kỳ
phân tích nào cũng có một số biến nhất định là biến độc lập hoặc biến giải thích. Những
thuộc tính này là nguyên nhân của một kết quả. Các biến khác là biến phụ thuộc hoặc biến
đáp ứng; giá trị của chúng phụ thuộc vào các biến độc lập. Nhìn chung, hồi quy logistic
12
khám phá cách các biến độc lập ảnh hưởng đến một biến phụ thuộc bằng cách xem xét các
giá trị dữ liệu lịch sử của cả hai biến.
Hồi quy logistic là một mô hình thống kê sử dụng hàm logistic, hay hàm logit trong
toán học làm phương trình giữa x và y. Hàm logit ánh xạ y làm hàm sigmoid của x.
1
f ( x )=
1+e− x
13
3.3.3 Linear Discriminant Analysis (LDA)
3.3.3.1 LDA là gì ?
Tuyến tính phân tích biệt thức (LDA) là một loại kết hợp tuyến tính, một quá trình
toán học sử dụng các mục dữ liệu khác nhau và chức năng áp dụng để thiết lập đó để riêng
phân tích nhiều lớp của đối tượng hoặc các mặt hàng. Chảy từ biệt thức tuyến tính Fisher,
phân tích biệt thức tuyến tính có thể hữu ích trong các lĩnh vực như nhận dạng hình ảnh và
phân tích tiên đoán trong tiếp thị.
3.3.3.2 ý nghĩa
Ý tưởng cơ bản của tổ hợp tuyến tính đi trở lại như xa như những năm 1960 với
Altman Z-score xin phá sản và cấu trúc dự đoán khác. Bây giờ, phân tích biệt thức tuyến
tính giúp ta tái hiện dữ liệu trong hơn hai lớp, khi hồi quy logic là chưa đủ. Tuyến tính
phân tích biệt có giá trị trung bình cho mỗi lớp học và xem xét các biến thể để đưa ra dự
đoán giả định một phân phối Gaussian. Đây là một trong một số loại thuật toán là một phần
của việc tạo mô hình học máy cạnh tranh.
3.3.4 KneighborsClassifier
3.3.4.1 knn là gì ?
KNN (K-Nearest Neighbors) là một trong những thuật toán học có giám sát đơn giản
nhất được sử dụng nhiều trong khai phá dữ liệu và học máy. Ý tưởng của thuật toán này là
nó không học một điều gì từ tập dữ liệu học (nên KNN đượ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 nhãn của dữ liệu mới.
Lớp (nhãn) của một đối tượng dữ liệu mới có thể dự đoán từ các lớp (nhãn) của k hàng
xóm gần nó nhất.
14
Chương IV. Thực Nghiệm Và Đánh Giá
4.1 Mô tả dữ liệu
Bộ dữ liệu bệnh tim được sử dụng trong nghiên cứu này là bộ dữ liệu công khai với
1025 mẫu, trong đó có 526 mẫu được gán nhãn thuộc lớp có nguy cơ mắc bệnh tim (target
= 1), số mẫu còn lại 499 thuộc lớp không có nguy cơ (target = 0). Ở bộ dữ liệu gốc ban
đầu, mỗi mẫu gồm 76 thuộc tính bao gồm các thuộc tính chẩn đoán khác nhau và thông tin
y tế được thu thập từ mỗi bệnh nhân. Tuy nhiên, có nhiều thuộc tính do không có dữ liệu
hoặc thiếu dữ liệu do đó đã được loại bỏ để còn lại 14 thuộc tính
Bao gồm : age, sex, cp, trestbps, chol, fbs, restcg, thalach, exang, oldpeak, slope, ca,
thal, target.
Trong đó:
Age: Tuổi ( 29 -77 )
Sex: giới tính (1 là nam, 0 là nữ)
Cp: loại đau ngực (1: cơn đau thắt ngực rõ ràng, 2: đau thắt ngực không rõ ràng, 3:
không đau thắt ngực, 4: không có triệu chứng )
Trestbps: Huyết áp lúc nghỉ ngơi (đơn vị mmHg)
chol: cholesterol trong huyết thanh tính bằng mg/dl
fbs: (đường huyết lúc đói> 120 mg / dl): 1 = true; 0 = false
restecg: kết quả điện tâm đồ lúc nghỉ
thalach: nhịp tim tối đa
exang: đau thắt ngực do tập thể dục (1 = có; 0 = không)
oldpeak = ST ức chế do luyện tập so với khi nghỉ
slope: độ dốc của đoạn ST tập luyện đỉnh cao (1: dốc lên , 2: bằng phẳng , 3: dốc
xuống )
ca: số lượng mạch chính (0-3) được tô màu bằng phương pháp nội soi
thal: (3 = bình thường; 6 = khuyết tật cố định; 7 = khiếm khuyết có thể đảo ngược )
target: thuộc tính phân lớp (1 = Bệnh tim, 0 = Không có bệnh tim).
15
Hình 6: sơ đồ mô tả các cột dữ liệu
Từ sơ đồ ở trên ta có thể thấy sơ lược được độ tuổi trung bình tập trung nhiều nhất
nằm ở mức 66 tuổi và bộ dữ liệu này nghiên cứu có số lượng nam nhiều hơn so với nữ giới
gần như là gấp đôi ngoài ra ta có thể thông qua các biểu đồ còn lại để có thể quan sát gõ
hơn về sự biến thiên của các cột dữ liệu còn lại và đặc biệt ở đây ta có thể thấy cột target
số lượng người mắc bệnh và người không mắc bệnh chênh lệch nhau là không nhiều
16
Hình 7 : biểu đồ tròn tỷ lệ các nhóm
4.2 Xử lý dữ liệu
Dựa vào sơ đồ ma trận tương quan hóa dữ liệu ta thấy được các cột thuộc tính của bộ
dữ liệu đều có độ tương quan với nhau không có cột nào có màu tối hơn các cột còn lại
chứng tỏ các cột dữ liệu đều có sự tương quan với nhau, dưa vào cột mục tiêu ở đây là cột
target ta thấy được 13 cột dữ liệu còn lại đều có màu sắc khá tương đồng không có sự
chênh lệch quá lớn
Nhìn vào sơ đồ ta thấy duy chỉ có 2 cột dữ liệu là slope và oldpeak là 2 cột có độ
tương quan với nhau rất thấp nhưng độ tương quan giữa 2 cột này với các cột còn lại là khá
ổn định nên xem ra cũng không đáng kể vì vậy bộ dữ liệu này sẽ tiến hành không loại bỏ
các cột
17
Hình 9: sơ đồ ma trận trực quan hóa dữ liệu
Ở bộ dữ liệu gốc ban đầu, mỗi mẫu gồm 76 thuộc tính bao gồm các thuộc tính chẩn
đoán khác nhau và thông tin y tế được thu thập từ mỗi bệnh nhân. Tuy nhiên, có nhiều
thuộc tính do không có dữ liệu hoặc thiếu dữ liệu do đó đã được loại bỏ để còn lại 14 thuộc
tính
Để tiến hành xử lý bộ dữ liệu đầu tiên cho đọc bộ dữ liệu và gán lại nhãn cho các cột
dữ liệu, thuận tiện cho việc thao tác
CODE:
url = "/content/heart.csv"
names = ['age','sex','cp','trestbps','chol','fbs','restecg','thalach','exang','oldpeak','slope','
ca','thal','target']
dataset = pd.read_csv(url,names=names)
dataset.head(1025)
Tổng kết thông tin và thống kê dữ liệu cho các cột và xem thông tin về Index, kiểu dữ
liệu và dung lượng của DataFrame qua kiểm tra ta thấy được dữ liệu trong data bao gồm
18
1025 dữ liệu và 14 cột trong đó có 13 cột dữ liệu thuộc kiểu dữ liệu int64 và 1 cột thuộc
kiểu float64
Tiếp đến là tiến hành kiểm tra dữ liệu ở các cột xem các giá trị trong cột có giá trị nào
trống không do đã qua quá trình sàng lọc dữ liệu trước đó từ bộ dữ liệu gốc có 76 cột dữ
liệu đã được qua xử lý và loại bỏ các cột dữ liệu thiếu khuyết và cột dữ liệu trống, với kết
quả cho ra là trong 14 cột dữ liệu không có dữ liệu rỗng.
CODE:
dataset[categorical].isnull().sum()
Khi đã tiến hành kiểm tra các ô giá trị rỗng bên trong bộ dữ liệu ta tiến hành bước xử
CODE:
# replace '?' values in workclass variable with `NaN`
df['age'].replace('?', np.NaN, inplace=True)
df['sex'].replace('?', np.NaN, inplace=True)
df['cp'].replace('?', np.NaN, inplace=True)
df['trestbps'].replace('?', np.NaN, inplace=True)
df['chol'].replace('?', np.NaN, inplace=True)
df['fbs'].replace('?', np.NaN, inplace=True)
df['restecg'].replace('?', np.NaN, inplace=True)
df['thalach'].replace('?', np.NaN, inplace=True)
df['exang'].replace('?', np.NaN, inplace=True)
df['oldpeak'].replace('?', np.NaN, inplace=True)
df['slope'].replace('?', np.NaN, inplace=True)
df['ca'].replace('?', np.NaN, inplace=True)
df['thal'].replace('?', np.NaN, inplace=True)
lý gán nhãn cho các ô dữ liệu bị trống nếu có
19
4.3 Chia dữ liệu
Sau khi đã qua kiểm tra và xử lý bộ dữ liệu ta sẽ thự c hiện chia bộ dữ liệu ra là m
2 phầ n bao gồ m 80% là dữ liệu train(dữ liệu đượ c dù ng cho má y họ c) và 20% dữ liệu
test(dữ liệu thử độ chính xá c).
Dataset
80% 20%
Training Test
CODE:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state
= 42)
Sau khi chia cắt bộ dữ liệu thành 2 phần ta được 820 dòng dữ liệu được đưa vào máy
học và 205 dòng dữ liệu để test và dự đoán điểm chính xác của thuật toán, giờ ta đã có
được bộ dữ liệu train và bộ dữ liệu test ta tiếp tục đưa 2 phần dữ liệu vào kiểm tra lại giá trị
rỗng 1 lần nửa và chuẩn hóa dữ liệu trước khi được vào model để tiến hành máy học
Ngoài ra, do trong bài nghiên cứu của nhóm em thì có sử dụng 2 phương pháp chia
dữ liệu nên có thêm 1 cách chia dữ liệu theo kiểu k Fold với k = 10, chia bộ dữ liệu thành
10 phần bằng nhau
CODE:
10% 10%
Dataset
10% 10%
10% 10%
Sau khi đã có được bộ dữ liệu train và bộ dữ liệu test ta tiếp tục đưa 2 phần dữ liệu
vào kiểm tra lại giá trị rỗng 1 lần nửa và chuẩn hóa dữ liệu trước khi được vào model để
tiến hành máy học
CODE:
X_train = encoder.fit_transform(X_train)
X_test = encoder.transform(X_test)
CODE:
LDA KNN
22
LinearDiscriminantAnalysis : cho độ chính xác là 81%
KNeighborsClassifier : cho độ chính xác là 55,6%
CODE:
OUTPUT:
Khi tiến hành lấy ngẫu nhiên 1 người không bị mắc bệnh tim trong tập dữ liệu ban
đầu có các thông số như sau : Tuổi = 52, giới tính = nam , loại đau ngực = 0, huyết áp lúc
nghỉ ngơi = 125mmHg, cholesterol trong huyết thanh = 212 mg/dl , đường huyết lúc đói >
120mg/dl = 0, kết quả điện tâm đồ lúc nghỉ = 1, nhịp tim tối đa = 168, đau thắt ngực do tập
thể dục = 0, ST ức chế do luyện tập so với khi nghỉ = 1, độ dốc của đoạn ST tập luyện = 2,
số lượng mạch chính = 2, thal = 3 đưa vào thử nghiệm dự đoán thực tế trên model thì ta
23
thấy được kết quả đưa ra là không mắc bệnh tim
Age = 52
Sex = 1
Cp = 0
Trestbps = 125
Chol = 212
Fbs = 0
Restecg = 1 Target = 0
Thalach = 168 ( khô ng có bệnh tim)
Exang = 0
Oldpeak = 1
Slope = 2
Ca = 2
Thal = 3
Hình 13: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu
Lần thứ 2 là lựa chọn ngẫu nhiên 1 người bị bệnh tim trong tập dữ liệu ban đầu để
đưa vào thử nghiệm thực tế với model
CODE:
OUTPUT:
Với lần thử nghiệm thực tế này thì em chọn người bị bệnh tim có các thông số như
sau: Tuổi = 59, giới tính = nam , loại đau ngực = 1, huyết áp lúc nghỉ ngơi = 140mmHg,
cholesterol trong huyết thanh = 221 mg/dl , đường huyết lúc đói > 120mg/dl = 0, kết quả
điện tâm đồ lúc nghỉ = 1, nhịp tim tối đa = 164, đau thắt ngực do tập thể dục = 1, ST ức
24
chế do luyện tập so với khi nghỉ = 0, độ dốc của đoạn ST tập luyện = 2, số lượng mạch
chính = 0, thal = 2 đưa vào thử nghiệm dự đoán thực tế trên model thì ta thấy được kết quả
đưa ra là mắc bệnh tim
Age = 59
Sex = 1
Cp = 1
Trestbps = 1 40
Chol = 2 21
Fbs = 0
Restecg = 1 T arget = 1
Thalach = 16 4 ( Có bệnh tim)
Exang = 1
Oldpeak = 0
Slope = 2
Ca = 0
Thal = 2
Hình 14: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu
25
Hình 15: so sánh thuật toán ( phương pháp holdout )
So sánh bằng cách chia dữ liệu theo kiểu kFold thì ta nhận được là
Logistic Regression > NaïveBayesGaussian > Linear Discriminant Analysis >
KNeighborsClassifier
tương đương với: 98,5% > 97% > 81% > 55,6%
Còn ở với phương pháp chia thuật toán theo kiểu kfold thì ta nhận được Logistic
Regression vẫn là thuật toán có độ chính xác cao nhất trong 4 thuật toán được sử dụng
trong lần này là 98,5%
26
Hình 16: so sánh thuật toán ( phương pháp kfold )
Thông qua phần thực nghiệm và đánh giá trên ta nhận thấy được trong 4 thuật toán
được áp dụng vào machine learning thì Logistic Regression độ chính xác trung bình là cao
nhất 97,42% và khi đưa vào test thực tế với một dòng dữ liệu ngẫu nhiên trong tập dữ liệu
ban đầu thì đưa ra kết quả là chính xác
Vì vậy trong bộ dữ liệu này chúng ta nên sử dụng thuật toán Logistic Regression để
có thể đưa ra kết quả dự đoán chính xác tốt nhất có thể.
27
Chương V. Kết luận
Bài báo cáo của nhóm em có sử dụng cùng bộ dữ liệu với bài báo của Trần Đình
Toàn, Dương Thị Mộng Thùy Trường Đại học Công nghiệp Thực phẩm TP.HCM trong
bài báo trên thì tác giả sử dụng các thuật toán Naive Bayes Bernoulli với độ chính xác 83%
và Artificial Neural Network với độ chính xác là 87% ,
Trong bài nghiên cứu của nhóm em thực hiện trên cùng bộ dữ liệu bệnh tim đó và
được thực nghiệm bằng 2 phương pháp chạy khác nhau trên 4 thuật toán khác nhau bao
gồm GaussianNB, LogisticRegression, LinearDiscriminantAnalysis, KNeighborsClassifier
qua đó ta có thể nhận thấy được với bộ dữ liệu được chia khác nhau và với các phương
pháp huấn luyện khác nhau ta sẽ nhận được độ chính xác thay đổi ngoài ra tùy thuộc vào
thiết bị mạnh yếu khác nhau cũng sẽ cho ra thời gian dự đoán nhanh hay chậm khác nhau
nhưng ta có thể nhận ra được qua 2 cách chia dữ liệu ở trên là Holdout và k Fold thì ta thấy
được điểm chính xác trung bình của thuật toán Logistic Regression là cao nhất trong 4
thuật toán được đưa vào máy học có độ chính xác trung bình lên đến 97,42%.
Vì vậy với bộ dữ liệu này chúng ta nên sử dụng thuật toán Logistic Regression để có
thể nhận được kết quả dự đoán có tỉ lệ chính xác cao nhất ngoài ra có một số lưu ý với mỗi
bộ dữ liệu khác nhau thì các thuật toán áp dụng sẽ khác nhau nên chúng ta cần thử nghiệm
với nhiều thuật toán để đưa ra lựa chọn hợp lý nhất.
28
Tài liệu tham khảo
1. Bài giảng của giảng viên Đặng Như Phú, Hồ Ngọc Trung Kiên của trường đại học
Nguyễn Tất Thành.
2. Dataset: https://www.kaggle.com/datasets/johnsmith88/heart-disease-dataset
3. Tạp chí Khoa học Công nghệ và Thực phẩm 22 (3) (2022) 398-40
4. Machinelearningcoban.vn/.
5. Kỷ yếu Hội nghị KHCN Quốc gia lần thứ XII về Nghiên cứu cơ bản và ứng dụng
Công nghệ thông tin (FAIR); Huế, ngày 07-08/6
6. Link source code:
https://colab.research.google.com/drive/1ylGYou8cYaLxB5FIPpV10MRdd9O2C8sa
#scrollTo=9V_ZN54kLvi5
7. https://colab.research.google.com/drive/
1_HADEVWb3SLry109cVCWXeVF3VfVM2YD#scrollTo=kfphaCTtUKCm
1. bài báo ngoài nước:
https://drive.google.com/drive/folders/1x5oZDjGA7S6breqDeyoy2gApBflnxOtO
2. bài báo trong nước:
8. https://drive.google.com/drive/folders/1x5oZDjGA7S6breqDeyoy2gApBflnxOtO
29