Download as pdf or txt
Download as pdf or txt
You are on page 1of 65

ỦY BAN NHÂN DÂN TP.

HỒ CHÍ MINH
ĐẠI HỌC SÀI GÒN
KHOA CÔNG NGHỆ THÔNG TIN

MÔN HỌC: KHAI PHÁ DỮ LIỆU

DỀ TÀI: PHÂN TÍCH TÂP DỮ LIỆU “MY2022 FUEL


CONSUMPTION RATINGS
GIẢNG VIÊN: Vũ Ngọc Thanh Sang
Người thực hiện:Phạm Đình Phương Nam-3119560045

Tp. Hồ Chí Minh, tháng 5 năm 2023


LỜI MỞ ĐẦU
Trong xã hội hiện đại ngày nay, thế giới đang bước vào cuộc cách mạng cộng nghệ
5.0 với sự phát triển như vũ bão của công nghệ thông tin, dẫn đến sự phát triển rộng hơn
nhiều mảng của lĩnh vực công nghệ, điều hiện được nhắc đền nhiều nhất trên thế giới và
tại Việt Nam đó là Trí Tuệ Nhận Tạo (AI) và Máy học Machine Learning. Và việc phát
triển được nhiều nước quan tâm, một trong những khởi đầu cơ bản của nó là việc xử lý
dữ liệu, nghiên cứu về tính chất của dữ liệu để phục vụ cho lĩnh vực AI là điều rất cần
thiết.
Nhưng bên cạnh đó việc tin học hoá một cách ồ ạt và nhanh chóng các hoạt động sản
xuất, kinh doanh cũng như nhiều lĩnh vực hoạt động khác đã tạo ra cho chúng ta một
lượng dữ liệu lưu trữ khổng lồ. Hàng triệu cơ sở dữ liệu đã được sử dụng trong các hoạt
động sản xuất, kinh doanh, quản lý ... trong đó có nhiều cơ sở dữ liệu cực lớn cỡ gigabyte,
thậm chí là terabyte. Sự bùng nổ này đã dẫn tới một yêu cầu cấp thiết là cần có những kỹ
thuật và công cụ mới để tự động chuyển đổi lượng dữ liệu khổng lồ kia thành các tri thức
có ích. Từ đó, các kỹ thuật Khai phá dữ liệu đã trở thành một lĩnh vực thời sự của nền
Công nghệ thông tin trên thế giới hiện nay. Một vấn đề được đặt ra là phải làm sao trích
chọn được những thông tin có ý nghĩa từ tập dữ liệu lớn để từ đó có thể giải quyết được
các yêu cầu của thực tế như trợ giúp đưa ra quyết định, dự đoán, … và khai phá dữ liệu
(Data mining) đã ra đời nhằm giải quyết các yêu cầu đó.
Ngay từ những ngày đầu khi xuất hiện, Data mining đã trở thành một trong những xu
hướng nghiên cứu phổ biến trong lĩnh vực học máy tính và công nghệ tri thức. Nhiều
thành tựu nghiên cứu của Data mining đã được áp dụng trong thực tế. Data mining có
nhiều hướng quan trọng (phân loại,phân cụm,hồi quy, …) và một trong các hướng đó là
phân loại dữ liệu (Data classification). Phân loại dữ liệu là công việc sắp xếp các dữ liệu
dựa theo những tiêu chí khác nhau được đặt ra, hay mức độ tần suất truy cập sử dụng
data. Dựa vào những yếu tố trên để tiến hành phân loại theo nhiều tầng lớp và mức độ
khác nhau cho từng loại dữ liệu.

2
MỤC LỤC
CHƯƠNG I. GIỚI THIỆU .............................................................................................. 4
1. Giới thiệu về đề tài................................................................................................... 4
2. Mục đích ................................................................................................................... 5
CHƯƠNG II. MÔ TẢ DỮ LIỆU ..................................................................................... 6
1. Nguồn gốc của bộ dữ liệu ........................................................................................ 6
2. Số lượng mẫu ........................................................................................................... 6
3. Số lượng thuộc tính ................................................................................................. 6
CHƯƠNG III. TIỀN XỬ LÝ DỮ LIỆU .......................................................................... 8
1. Đọc dữ liệu ............................................................................................................... 8
2. Xử lý dữ liệu ............................................................................................................. 9
CHƯƠNG IV. PHÂN TÍCH DỮ LIỆU KHÁM PHÁ .................................................. 17
1. Phân tích thống kê mô tả ...................................................................................... 17
2. Phân tích đơn biến ................................................................................................. 27
2. Phân tích đa biến ................................................................................................... 48
CHƯƠNG V. KHAI PHÁ DỮ LIỆU ............................................................................. 52
1. Đặt câu hỏi ............................................................................................................. 52
2.Đề xuất thuật toán .................................................................................................. 53
CHƯƠNG VI. ĐÁNH GIÁ VÀ CHỌN THUẬT TOÁN ............................................... 54
1. K-Nearest Neighbors (KNN) ................................................................................ 54
2. XGBoost ................................................................................................................. 55
CHƯƠNG VII. KẾT QUẢ VÀ THẢO LUẬN ............................................................... 58
1. K-Nearest Neighbors (KNN) ................................................................................ 58
2. XGBoost ................................................................................................................. 60
CHƯƠNG VIII. KẾT LUẬN ......................................................................................... 62
1. Kết luận về hiệu quả .............................................................................................. 62
2. Khả năng áp dụng (ưu nhược điểm của phân loại) ............................................ 62
3. Đề xuất cải tiến ...................................................................................................... 64
CHƯƠNG IX. TÀI LIỆU THAM KHẢO...................................................................... 65

3
CHƯƠNG I. GIỚI THIỆU
1. Giới thiệu về đề tài
Ung thư phổi là nguyên nhân hàng đầu gây ra tử vong do ung thư trên toàn thế giới,
gây ra 1,59 triệu ca tử vong vào năm 2018. Đa số các ca ung thư phổi được gây ra do
hút thuốc, nhưng tiếp xúc với ô nhiễm không khí cũng là một yếu tố rủi ro. Một nghiên
cứu mới đã phát hiện rằng ô nhiễm không khí có thể liên quan đến nguy cơ tăng ung thư
phổi, thậm chí ở những người không hút thuốc.
Nghiên cứu, được công bố trong tạp chí Nature Medicine, đã xem xét dữ liệu từ hơn
462.000 người ở Trung Quốc đã được theo dõi trong thời gian trung bình sáu năm. Các
thành viên tham gia nghiên cứu được chia thành hai nhóm: những người sống ở khu vực
có mức độ ô nhiễm không khí cao và những người sống ở khu vực có mức độ ô nhiễm
không khí thấp.
Các nhà nghiên cứu phát hiện rằng những người trong nhóm ô nhiễm cao có nhiều
khả năng phát triển ung thư phổi hơn so với những người trong nhóm ô nhiễm thấp. Họ
cũng phát hiện rằng rủi ro cao hơn ở những người không hút thuốc so với người hút
thuốc, và rủi ro tăng lên với tuổi tác.
Mặc dù nghiên cứu này không chứng minh rằng ô nhiễm không khí gây ra ung thư
phổi, nhưng nó cho thấy có thể có mối liên kết giữa hai yếu tố này. Cần thêm nghiên
cứu để xác nhận những phát hiện này và xác định tác động Trong bài này em chọn tập
dữ liệu trên Kaggle:https://www.kaggle.com/datasets/thedevastator/cancer-patients-
and-air-pollution-a-new-link

4
2. Mục đích
1. Hiểu rõ hơn về mối liên hệ giữa ô nhiễm không khí và ung thư phổi: Mặc dù đã
có một số nghiên cứu cho thấy mối liên hệ giữa ô nhiễm không khí và ung thư phổi,
việc khai thác dữ liệu sẽ giúp xác định rõ hơn mức độ ảnh hưởng và vai trò của ô
nhiễm không khí trong việc tăng nguy cơ mắc bệnh ung thư phổi.
2. Xác định các yếu tố nguy cơ khác: Ngoài ô nhiễm không khí, có thể có các yếu tố
khác cũng đóng góp vào nguy cơ mắc bệnh ung thư phổi. Việc khai thác dữ liệu có
thể giúp tìm ra và xác định các yếu tố này.
3. Phát triển mô hình dự đoán: Dựa trên dữ liệu, có thể phát triển một mô hình dự
đoán nguy cơ mắc bệnh ung thư phổi dựa trên các yếu tố nguy cơ, bao gồm ô nhiễm
không khí.
4. Đề xuất giải pháp: Dựa trên các kết quả từ việc khai thác dữ liệu, có thể đề xuất các
giải pháp để giảm bớt tác động của ô nhiễm không khí đối với sức khỏe, đặc biệt là
nguy cơ mắc bệnh ung thư phổi.
5. Khuyến nghị chính sách: Kết quả từ việc khai thác dữ liệu cũng có thể được sử dụng
để đề xuất hoặc hỗ trợ trong việc phát triển chính sách y tế và môi trường, nhằm giảm
nguy cơ mắc bệnh ung thư phổi liên quan đến ô nhiễm không khí.

3. Phạm vi của dự án khai phá dữ liệu


1. Phân tích ô nhiễm không khí: Đánh giá mức độ ô nhiễm không khí tại các khu vực
khác nhau và ảnh hưởng của nó lên nguy cơ mắc bệnh ung thư phổi. Điều này có thể
bao gồm việc phân tích các chỉ số ô nhiễm không khí, cũng như xác định mức độ tiếp
xúc với ô nhiễm không khí của mỗi cá nhân.
2. Xác định các yếu tố nguy cơ: Cung cấp một cái nhìn toàn diện về các yếu tố nguy
cơ liên quan đến ung thư phổi, bao gồm không chỉ ô nhiễm không khí mà còn cả các
yếu tố khác như hút thuốc, tiếp xúc với chất độc hại trong môi trường làm việc, lịch
sử gia đình, và các yếu tố sinh học khác.

5
3. Phát triển mô hình dự đoán: Xây dựng và kiểm tra mô hình dự đoán nguy cơ mắc
bệnh ung thư phổi dựa trên các yếu tố nguy cơ đã xác định. Điều này có thể bao gồm
việc sử dụng các phương pháp học máy hoặc thống kê để xây dựng mô hình.
4. Đề xuất giải pháp và khuyến nghị chính sách: Dựa trên kết quả của việc khai thác
dữ liệu, đề xuất các giải pháp cụ thể để giảm nguy cơ mắc bệnh ung thư phổi, như cải
thiện chất lượng không khí, tăng cường kiểm soát hút thuốc, và tăng cường giáo dục
về sức khỏe. Đồng thời, có thể đưa ra khuyến nghị về chính sách y tế và môi trường
nhằm giảm nguy cơ mắc bệnh ung thư phổi do ô nhiễm không khí.

CHƯƠNG II. MÔ TẢ DỮ LIỆU


1. Nguồn gốc của bộ dữ liệu
Bộ dữ liệu được lấy từ trang web của Kaggle – một cộng đồng chuyên về Khoa học Dữ
liệu và Máy học và cũng là một trong những thư viện tập dữ liệu trực tuyến lớn nhất.
Link DataFrame https://www.kaggle.com/datasets/thedevastator/cancer-patients-and-
air-pollution-a-new-link
Bộ dữ liệu này chứa thông tin về bệnh nhân mắc bệnh ung thư phổi, bao gồm tuổi tác,
giới tính, tiếp xúc với ô nhiễm không khí, việc sử dụng rượu, dị ứng bụi, nguy cơ nghề
nghiệp, nguy cơ di truyền, bệnh phổi mãn tính, chế độ ăn uống cân đối, béo phì, hút thuốc,
hút thuốc thụ động, đau ngực, ho kèm theo máu, mệt mỏi, giảm cân, khó thở, khò khè, khó
nuốt, móng tay bị bầm tím và ngáy..

2. Số lượng mẫu
DataFrame “Lung Cancer Prediction” có 1000 dòng dữ liệu dựa theo Nature
Medicine chứa các thông tin về bệnh nhân ung thư phổi.

3. Số lượng thuộc tính


DataFrame “Lung Cancer Prediction” có 26 cột mô tả và trong đó có 20 cột các thuộc
tính cần thiết của một DataFrame về các nguyên nhân gây ung thư bao gồm:
1. Age: Tuổi của bệnh nhân. (Số)
2. Gender: Giới tính của bệnh nhân.
3. Air Pollution; Mức độ tiếp xúc với ô nhiễm không khí của bệnh nhân.

6
4. Alcohol: use Mức độ sử dụng rượu của bệnh nhân.
5. Dust Allergy: Mức độ dị ứng bụi của bệnh nhân.
6. OccuPational Hazards: Mức độ tiếp xúc với nguy cơ nghề nghiệp của bệnh
nhân.
7. Genetic Risk: Mức độ rủi ro di truyền của bệnh nhân.
8. Chronic Lung: Disease Mức độ bệnh phổi mãn tính của bệnh nhân.
9. Balanced Diet: Mức độ chế độ ăn uống cân đối của bệnh nhân.
10. Obesity: Mức độ béo phì của bệnh nhân.
11. Smoking: Mức độ hút thuốc của bệnh nhân.
12. Passive Smoker: Mức độ hút thuốc thụ động của bệnh nhân.
13. Chest Pain: Mức độ đau ngực của bệnh nhân.
14. Coughing of Blood: Mức độ ho kèm theo máu của bệnh nhân.
15. Fatigue: Mức độ mệt mỏi của bệnh nhân.
16. Weight Loss: Mức độ giảm cân của bệnh nhân.
17. Shortness of Breath: Mức độ khó thở của bệnh nhân.
18. Wheezing: Mức độ khò khè của bệnh nhân.
19. Swallowing Difficulty: Mức độ khó nuốt của bệnh nhân.
20. Clubbing of Finger Nails: Mức độ móng tay bị bầm tím của bệnh nhân

7
CHƯƠNG III. TIỀN XỬ LÝ DỮ LIỆU
1. Đọc dữ liệu
+ Kết nói với Google Drive:

Đoạn code trên được sử dụng để kết nối Google Colab với Google Drive, cho phép
bạn truy cập vào thư mục hoặc file có trên Drive từ Colab.
Sau thực hiện đoạn code này Google Colab sẽ yêu cầu truy cập vào một liên kết và cấp
quyền truy cập để kết nối với Google Drive.
Sau khi kết nối thành công Google Colab và Google Drive, bạn có thể sử dụng trực
tiếp các flie có trên Dive để làm việc trên Colab mà không cần phải tải chúng xuống.
Điều này rất hữu ích khi bạn muốn truy cập và sử dụng các tệp dữ liệu lớn hoặc chia sẻ
các tập dữ liệu và kết quả với nhiều người.

+ Thêm các thư viện

Tiếp theo chúng ta tiến hành import các thư viện cho viêc phân tích và khai phá dữ
liệu bao gồm:
• pandas: thư viện để xử lý và phân tích dữ liệu.
• matplotlib.pyplot: thư viện để trực quan hóa dữ liệu dưới dạng biểu đồ.

8
• seaborn: thư viện cung cập các công cụ trực quan hóa dữ liệu cho Python, dựa
trên matplotlib.
• plotly.express: thư viện để tạo biểu đồ tương tác trong Python..
• plotly.offline: thư viện để tạp chạy offline

Sau đó ta tiếp tục thực hiện lệnh đọc tập tin csv có đường dẫn
“//content/drive/MyDrive/KPDL2/cancer patient data sets.csv” từ Google Drive và gắn
nó vào biến df dưới dạng một đối tượng DataFrame của thư viện pandas.

Sau khi thực hiện bước này chúng ta có thể thể thực hiện các thao tác trên dữ liệu như
lọc, truy cập, xử lý và phân tích dữ liệu.

2. Xử lý dữ liệu
- Lấy dữ liệu:
Chúng ta sử dụng lênh df = df.head() để lấy 5 dòng dữ liệu từ DataFrame ban đầu
để tiến hành các bước tiếp theo của quá trình phân tích.

- Tổng quan về dữ liệu

Chúng ta sử dụng phương thức df.info() để hiển thi thông tin tổng quan về các cột
trong DataFrame bao gồm:
• Tên các cột và số lượng giá trị không null trong mỗi cột.
• Tổng số lượng hàng và cột trong bộ dữ liệu.
• Kiểu dữ liệu của mỗi cột.
• Số lượng bộ nhớ đã sử dụng.

9
Sau khi thực hiện lệnh df.info() ta sẽ được kết quả như hình:

Kết quả trên biểu diễn:


• DataFrame này có 1000 dòng với 26 cột.
• Trong DataFrame có 24 cột là dữ liệu int64; 2 cột là dữ liệu object.
• Tất cả các cột đều có 1000 giá trị không null.
• Bộ nhớ đã sử dụng là 203.2 + KB.

10
- Xử lý các cột dữ liệu không cần thiết

Để loại bỏ những cột dữ liệu không cần thiết trong trường hợp dự đoàn bệnh ung thư
phổi thì có các cột :
1. "index": Cột này thường chỉ chứa chỉ số của từng hàng và không mang thông
tin hữu ích cho việc dự đoán. Do đó, nó có thể được loại bỏ.
2. "Patient Id": Tương tự như "index", "Patient Id" thường chỉ là một định danh
duy nhất cho mỗi bệnh nhân và không mang thông tin hữu ích cho việc dự đoán.
Do đó, nó cũng có thể được loại bỏ.
3. "Level": Trong trường hợp này, tôi giả định rằng "Level" là mục tiêu dự đoán
(target variable), nghĩa là bạn muốn dự đoán mức độ ung thư phổi dựa trên các
biến khác. Do đó, cột này không nên được loại bỏ.

Các cột khác: Tất cả các cột khác đều liên quan đến các yếu tố có thể ảnh hưởng đến
ung thư phổi, như "Age", "Gender", "Air Pollution", "Alcohol use", v.v. Nên giữ lại tất
cả những cột này cho mô hình.
Ta sử dụng lệnh đẻ loại bỏ và in ra sau khi loại bỏ các cột đó

11
12
- Xử lý các giá trị khuyết
Để xử lý dữ liệu khuyết trong bộ dữ liệu, ta thực hiện lệnh data.isnull().sum()để kiểm
tra xem bộ dữ liệu có bị khuyết hay không(0 là số giá trị bị thiếu).

13
- Xử lý dữ liệu bị trùng
Để xử lý dữ liệu bị trùng trong DataFrame ta sử dụng lệnh để loạ kiểm tra có bao
nhiêu những dữ liệu bị trùng.

Sau khi thực hiện lệnh loại bỏ các dữ liệu bị trùng ta kiểm tra lại số lượng dòng dữ liệu
còn lại bằng lệnh

- Xử lý dữ liệu ngoại lai


Để loại bỏ giá trị ngoại lai, ta sẽ tính IQR và loại bỏ nó

14
Trong đó:
• q1: là phân vị thứ 25% của tập dữ liệu
• q3: là phân vị thứ 75% của tập dữ liệu
• iqr: được tính bằng cách lấy sự khác biệt giữa q3 và q1
• outliers: xác định giá trị ngoại lệ bằng cách tìm các giá trị trị trong
DataFrame nằm ngoài khoảng (df<(q1-1.5*iqr)) | (df>(q3+1.5*iqr))

Kết luận: Quá trình xử lý giá trị ngoại lai là một phần quan trọng trong công việc
phân tích dữ liệu. Nó đóng góp vai trò quan trọng trong việc tìm ra các giá trị ngoại lai
và loại bỏ chúng khỏi cơ sở dữ liệu. Khi dữ liệu ngoại lai không được loại bỏ, nó có thể
gây ra ảnh hưởng đến kết quả phân tích và đưa ra những kết quả sai lệch.
Quá trình xử lý ngoại lai có tác dụng rất lớn đến quá trình phân tích và khai phá dữ
liệu bao gồm:
1. Cải thiện chất lương dữ liệu: Loại bỏ các các giá trị ngoại lai giúp cải thiện
chất lượng dữ liệu bằng cách giảm thiểu các giá trị bất thường và không chính
xác.
2. Tăng tính chính xác trong phân tích: Loại bỏ các giá trị ngoại lai giúp
tăng tính chính xác trong phân tích dữ liệu, đặc biệt là khi sử dụng các kỹ
thuật thống kê như tính trung bình, độ lệch chuẩn và phân phối.
3. Giảm thiểu ảnh hưởng của nhiễu: Các giá trị ngoại lai có thể được tạo ra
bởi nhiễu trong quá trình thu thập dữ liệu. loại bỏ chúng giúp giảm bớt ảnh
hưởng của nhiễu trên kết quả.
4. Cải thiện hiệu xuất và độ tin cậy của mô hình: Khi sử dụng dữ liệu dẵ
được xử lý ngoại lai huấn luyên mô hình, nó có thể giúp cái thiện hiệu suất
và độ tin cậy của mô hình.

15
- Xử lý dữ liệu nhiễu
Xử lý dữ liệu nhiễu là quá trình loại bỏ hoặc giảm thiểu các giá trị nhiễu, các giá trị
sai lệch hoặc các giá trị bị khuyết trong dữ liệu. Đây là một bước quan trọng trong quá
trình phân tích dữ liệu, bởi vì nếu dữ liệu chứa quá nhiều giá trị nhiễu hoặc thiếu sót thì
sẽ làm giảm độ chính xác của kết quả phân tích và dẫn đến những quyết định sai lầm.
Việc xử lý dữ liệu nhiễu có thể thực hiện bằng các phương pháp sau:
1. Kiểm tra giá trị ngoại lai: Bộ dữ liệu này có thể chứa một số giá trị ngoại lai
(outlier), những giá trị này có thể ảnh hưởng đến kết quả phân tích. Chúng ta
có thể sử dụng các phương pháp thống kê để xác định và loại bỏ các giá trị
ngoại lai.
2. Kiểm tra và xử lý các giá trị bị khuyết: Nếu bộ dữ liệu chứa các giá trị bị
khuyết, chúng ta có thể sử dụng các phương pháp như điền giá trị trung bình,
điền giá trị tần suất hoặc sử dụng các mô hình dự báo để ước tính các giá trị bị
khuyết.
3. Kiểm tra và xử lý dữ liệu trùng lặp: Chúng ta có thể sử dụng các hàm trong
thư viện pandas để kiểm tra và xóa các dòng dữ liệu trùng lặp.
4. Kiểm tra và xử lý các giá trị không hợp lệ: Chúng ta có thể kiểm tra và xử
lý các giá trị không hợp lệ như các giá trị âm cho các thông số âm thanh hoặc
giá trị nằm ngoài phạm vi hợp lệ của các thông số.

Nhận xét: Việc xử lý dữ liệu nhiễu phụ thuộc vào mục đích của phân tích. Vì mục
đích phân tích của nhóm là tìm hiểu và khai thác dữ liệu chủ yếu để trích xuất thông tin,
nên nhóm bỏ qua việc xử lý dữ liệu nhiễu.

16
CHƯƠNG IV. PHÂN TÍCH DỮ LIỆU KHÁM PHÁ
1. Phân tích thống kê mô tả
Để giúp người dùng có cái nhìn tổng quan về tập dữ liệu “Lung Cancer Prediction”,
chúng ta tiến hành quá trình phân tích thống kê mô tả dữ liệu bằng hàm df.describe().
Quá trình phân tích thống kê mô tả dữ liệu giúp chúng ta:
- Biết được giá trị trung bình, trung vị và phân vị của dữ liệu, từ đó ta có thể xác
định được trung tâm và phân bố dữ liệu.
- Hiểu được độ lệch của dữ lieu, giúp ta đánh giá được tính đồng đều của dữ liệu.
- Phát hiện được các giá trị ngoại lai và các giá trị bất thường, giúp ta xác định
được những dữ liệu cần được kiểm tra và loại bỏ để đảm bảo tính chính xác
của kết quả phân tích.
- Xác định được phân phối của dữ liệu, giúp ta lựa chọn được mô hình phù hợp
cho bài toán dự đoán.
- Tóm tắt các thông tin thống kê cơ bản của dữ liệu, giúp ta trình bày kết quả
phân tích một cách trực quan và dễ hiểu cho người đọc

17
Cụ thể sau khi thực hiện lệnh data.describe() ta thu được kết quả phân tích thống kê
như sau:

18
Trong đó:
- count: Số lượng mẫu (đơn vị xe hơi) trong tập dữ liệu.
- mean: Giá trị trung bình của các cột trong tập dữ liệu.
- std: Độ lệch chuẩn của các cột trong tập dữ liệu.
- min: gái trị nhỏ nhất của các cột trong tập dữ liệu.
- 25%, 50%, 75%: Giá trị phân vị của các cột trong tập dữ liệu.
- max: Giá trị lớn nhất của các cột trong tập dữ liệu

Căn cứ vào kết quả của hàm trên ta có thể nhận biết đặc điểm của từng cột như sau:

Do chúng ta xét tập DataFrame sử dụng 1000 dòng nên giá trị count là như nhau
1. Tuổi (Age): Bệnh nhân có tuổi từ 14 đến 73 với tuổi trung bình là 38.24. Độ lệch
chuẩn là 11.80, cho thấy có sự phân tán của dữ liệu về tuổi tương đối lớn.
§ std: 11.79
§ min: 14.0
§ 25%: 28.00
§ 50%: 37.00
§ 75%: 46.0
§ max: 73.0

2. Giới tính (Gender): Biến này có giá trị 1 hoặc 2, có thể tương ứng với nam và nữ.
Giới tính trung bình là 1.41, cho thấy có nhiều bệnh nhân thuộc giới tính 1 hơn.
§ std: 1.41
§ min: 1.0
§ 25%: 1.0
§ 50%: 1.0
§ 75%: 2.0
§ max: 2.0

19
3. Ô nhiễm không khí (Air Pollution): Mức độ tiếp xúc với ô nhiễm không khí của bệnh
nhân dao động từ 1 đến 8, với trung bình là 3.72.
§ std: 3.7
§ min: 1.0
§ 25%: 2.0
§ 50%: 3.0
§ 75%: 6.0
§ max: 8.0

4. Sử dụng rượu (Alcohol use): Mức độ sử dụng rượu dao động từ 1 đến 8, với trung
bình là 4.48.
§ std: 4.48
§ min: 1.8
§ 25%: 2.00
§ 50%: 5.00
§ 75%: 7.0
§ max: 8.0

5. Dị ứng bụi (Dust Allergy): Mức độ dị ứng bụi của bệnh nhân dao động từ 1 đến 8,
với trung bình là 5.05.
§ std: 2.02
§ min: 1.0
§ 25%: 3.75
§ 50%: 6.00
§ 75%: 7.0
§ max: 8.0

20
6. Rủi ro nghề nghiệp (Occupational Hazards): Mức độ rủi ro nghề nghiệp dao động từ
1 đến 8, với trung bình là 4.71.
§ std: 2.1
§ min: 1.8
§ 25%: 3.00
§ 50%: 6.00
§ 75%: 7.0
§ max: 8.0

7. Rủi ro di truyền (Genetic Risk): Mức độ rủi ro di truyền dao động từ 1 đến 7, với
trung bình là 4.49.
§ std: 2.1
§ min: 1.0
§ 25%: 2.00
§ 50%: 5.00
§ 75%: 7.0
§ max: 7.0

8. Bệnh phổi mãn tính (Chronic Lung Disease): Mức độ bệnh phổi mãn tính dao động
từ 1 đến 7, với trung bình là 4.24.
§ std: 1.8
§ min: 1.0
§ 25%: 3.00
§ 50%: 4.00
§ 75%: 6.0
§ max: 7.0

21
9. Chế độ ăn uống cân đối (Balanced Diet): Mức độ chế độ ăn uống cân đối dao động
từ 1 đến 7, với trung bình là 4.43.
§ std: 4.43
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 7.0
§ max: 7.0

10. Béo phì (Obesity): Mức độ béo phì dao động từ 1 đến 7, với trung bình là 4.41.
§ std: 4.41
§ min: 1.0
§ 25%: 3.00
§ 50%: 4.00
§ 75%: 7.0
§ max: 7.0

11. Hút thuốc (Smoking): Mức độ hút thuốc dao động từ 1 đến 8, với trung bình là
3.97.
§ std: 3.97
§ min: 1.0
§ 25%: 2.00
§ 50%: 3.00
§ 75%: 7.0
§ max: 8.0

22
12. Hút thuốc thụ động (Passive Smoker): Mức độ hút thuốc thụ động dao động từ 1
đến 8, với trung bình là 4.15.
§ std: 4.1
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 7.0
§ max: 8.0

13. Đau ngực (ChestPain): Mức độ đau ngực dao động từ 1 đến 9, với trung bình là
4.39.
§ std: 4.3
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 7.0
§ max: 9.0

14. Ho ra máu (Coughing of Blood): Mức độ ho ra máu dao động từ 1 đến 9, với trung
bình là 4.80.
§ std: 4.7
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 8.0
§ max: 9.0

23
15. Mệt mỏi (Fatigue): Mức độ mệt mỏi dao động từ 1 đến 9, với trung bình là 3.76.
§ std: 3.7
§ min: 1.0
§ 25%: 2.00
§ 50%: 3.00
§ 75%: 5.0
§ max: 9.0

16. Giảm cân (Weight Loss): Mức độ giảm cân dao động từ 1 đến 8, với trung bình là
3.83.
§ std: 3.83
§ min: 1.0
§ 25%: 2.00
§ 50%: 3.00
§ 75%: 6.0
§ max: 8.0

17. Khó thở (Shortness of Breath): Mức độ khó thở dao động từ 1 đến 9, với trung
bình là 4.27.
§ std: 4.27
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 6.0
§ max: 9.0

24
18. Khò khè (Wheezing): Mức độ khò khè dao động từ 1 đến 8, với trung bình là 3.78.
§ std: 3.8
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 5.0
§ max: 8.0

19. Khó nuốt (Swallowing Difficulty): Mức độ khó nuốt dao động từ 1 đến 8, với trung
bình là 3.75.
§ std: 3.75
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 5.0
§ max: 8.0

20. Ngón tay phình to (Clubbing of Finger Nails): Mức độ ngón tay phình to dao động
từ 1 đến 9, với trung bình là 3.89.
§ std: 3.89
§ min: 1.0
§ 25%: 2.00
§ 50%: 4.00
§ 75%: 5.0
§ max: 9.0

25
21. Cảm lạnh thường xuyên (Frequent Cold): Mức độ cảm lạnh thường xuyên dao
động từ 1 đến 7, với trung bình là 3.48.
§ std: 3.48
§ min: 1.0
§ 25%: 2.00
§ 50%: 7.00
§ 75%: 5.0
§ max: 7.0

22. Ho khan (Dry Cough): Mức độ ho khan dao động từ 1 đến 7, với trung bình là
3.68.
§ std: 3.6
§ min: 1.0
§ 25%: 2.00
§ 50%: 3.00
§ 75%: 5.0
§ max: 7.0

23. Ngáy (Snoring): Mức độ ngáy dao động từ 1 đến 7, với trung bình là 2.92.
§ std: 2.92
§ min: 1.0
§ 25%: 2.00
§ 50%: 3.00
§ 75%: 4.0
§ max: 7.0

26
2. Phân tích đơn biến
Phân tích đơn biến trong khai phá dữ liệu là một phương pháp trong thống kê để phân
tích sự phân bố của một biến đơn lẻ trong tập dữ liệu. Nó tập trung vào việc mô tả tính
chất của biến đó bằng các thống kê đơn giản như giá trị trung bình, phương sai, độ lệch
chuẩn, phân vị và tần số.
Phân tích đơn biến giúp cho người khai phá dữ liệu có thể hiểu rõ hơn về tính chất của
biến đó, như phân bố, độ lệch, tập trung và dải giá trị. Việc này có thể cung cấp thông
tin hữu ích để xác định các biến quan trọng và cải thiện chất lượng của tập dữ liệu.
- Xử dụng đồ thị histogram
Đồ thị histogram là một loại biểu đồ thống kê dùng để biểu diễn phân phối tần suất
của các giá trị trong một tập dữ liệu, thường được sử dụng để hình dung một tập dữ liệu
về độ phân tán, tập trung, và hình dạng của phân phối.
Đồ thị histogram mô tả phân phối tần suất của các giá trị trong một tập dữ liệu. Nó
biểu diễn một phân bố tần suất của các giá trị dữ liệu thông qua các cột dọc, trong đó
chiều rộng của các cột biểu thị khoảng giá trị của dữ liệu và chiều cao của các cột biểu
thị tần suất của giá trị trong khoảng đó.
Đồ thị histogram có nhiều tác dụng quan trọng trong phân tích dữ liệu và thống kê,
bao gồm:
1. Hình dung phân phối tần suất của dữ liệu: Đồ thị histogram cho phép biểu
diễn các tần suất của các giá trị trong một tập dữ liệu, giúp người sử dụng hiểu
được cách mà dữ liệu được phân bố trong một khoảng giá trị cụ thể.
2. Phát hiện outlier: Đồ thị histogram cho phép người sử dụng phát hiện các giá
trị ngoại lệ (outliers) - tức là các giá trị không nằm trong phân phối chung của
dữ liệu - một cách dễ dàng.
3. Đánh giá hình dạng phân phối: Đồ thị histogram cung cấp cho người sử dụng
một cái nhìn tổng quan về hình dạng phân phối của dữ liệu, cho phép phát hiện
những đặc điểm như đối xứng, lệch trái, lệch phải, hay nhiều chế độ.

27
4. So sánh các phân phối khác nhau: Đồ thị histogram cho phép so sánh các
phân phối khác nhau của các tập dữ liệu khác nhau, giúp người sử dụng hiểu
được sự khác biệt giữa chúng và có thể rút ra những kết luận từ đó.

Cụ thể ta dùng câu lênh sử dụng trong pandas dưới đây để tạo đồ thị histogram cho
từng biến của DataFrame:

28
§ Age

Trên đồ thị này, trục x biểu thị các khoảng giá trị của độ tuổi được chia thành các
khoảng từ 0-70 tuổi. Còn trục y biểu thị tần số xuất hiện của các giá trị trong từng
khoảng giá trị (ở đây là số lượng người). Phân phối tuổi khá đa dạng, với tần suất
cao nhất trong khoảng từ 34.65 đến 37.60. Điều này cho thấy tập dữ liệu bao gồm một
phạm vi rộng lớn các độ tuổi, nhưng đa số cá nhân nằm trong độ tuổi từ trung niên
đến tuổi già.

29
§ Gender

Trên đồ thị này, trục x biểu thị các khoảng giá trị của Gender(trai, gái) được chia
thành 2 số 1 biểu thị cho Nam giới và 2 biểu thị Nữ giới. Còn trục y biểu thị tần số xuất
hiện của các giá trị trong từng khoảng giá trị (ở đây là số lượng người). Từ đồ thị
chúng ta có thể thấy rằng số lượng người không cân đối so về giới tính trong tập dữ
liệu. Và biểu thị đa phần Nam giới là người mắc bệnh này

30
§ Air Pollution

Trên đồ thị này, trục x biểu thị các khoảng giá trị của Air Pollution biểu hiện từ
số :1-8. Còn trục y biểu thị tần số xuất hiện của các giá trị trong từng khoảng giá trị
(ở đây là số lượng người). Phân phối bị lệch về các giá trị cao hơn, cho thấy một số
lượng đáng kể các cá nhân trong tập dữ liệu sống trong các khu vực có ô nhiễm không
khí cao.

31
§ Alcohol Use

Trên đồ thị này, trục x biểu thị các khoảng giá trị của Alcohol Use. Còn trục y biểu
thị tần số xuất hiện của các giá trị trong từng khoảng giá trị (ở đây là số lượng người).
Từ đồ thị chúng ta có thể thấy ph phối khá đa dạng, cho thấy tập dữ liệu bao gồm các
cá nhân với một phạm vi rộng lớn các thói quen sử dụng rượu của người mắc bệnh.

32
§ Dust Allergy, Occupational Hazards, Genetic Risk, Chronic Lung Disease,
Balanced Diet, Obesity, Smoking, Passive Smoker, Chest Pain, Coughing of Blood

Trên đồ thị này, trục x biểu thị các khoảng giá trị của Dust Allergy, Occupational
Hazards, Genetic Risk, Chronic Lung Disease, Balanced Diet, Obesity, Smoking,
Passive Smoker, Chest Pain, Coughing of Blood. Còn trục y biểu thị tần số xuất hiện
của các giá trị trong từng khoảng giá trị (ở đây là số lượng người). Từ đồ thị chúng ta
có thể thấy rằng những yếu tố này cũng cho thấy phân phối đa dạng, cho thấy một
phạm vi đa dạng các yếu tố sức khỏe và triệu chứng của người mắc bệnh.

33
§ Fatigue, Weight Loss, Shortness of Break, Wheezing, Swallowing Difficulty,
Clubbing of Finger Nails

Trên đồ thị này, trục x biểu thị các khoảng giá Fatigue, Clubbing of Finger Nails,
Frequent Cold, Dry Cough, Snoring. Còn trục y biểu thị tần số xuất hiện của các giá
trị trong từng khoảng (ở đây là số lượng người). Từ đồ thị chúng ta có thể thấy được
những yếu tố này phân phối bị lệch về các giá trị cao hơn, biểu hiện cho những triệu
chứng hoặc tình trạng này phổ biến của người mắc bệnh.

- Xử dụng đồ thị boxplot


Đồ thị boxplot là một công cụ mô tả phân bố dữ liệu cho một biến số. Nó cho phép
người dùng biết được các thông tin chính về phân phối của dữ liệu, bao gồm:
1. Phạm vi giá trị (range): giá trị lớn nhất và nhỏ nhất của dữ liệu.
2. Các giá trị ngoại lai (outliers): các giá trị rời rạc nằm ngoài phạm vi thông
thường của dữ liệu.
3. Phân vị (quartiles): phân vị là giá trị chia tập dữ liệu thành các phần bằng
nhau. Boxplot hiển thị các giá trị của 5 phân vị, bao gồm giá trị nhỏ nhất,

34
quartile thứ nhất (Q1), giá trị trung vị (median), quartile thứ ba (Q3) và giá
trị lớn nhất.

Thông tin về phân bố dữ liệu được mô tả bởi các thành phần chính của boxplot, bao
gồm:
1. Hộp (box): đại diện cho khoảng giữa 50% giá trị trung tâm của dữ liệu (từ Q1
đến Q3). Chiều dài của hộp thể hiện độ phân tán của dữ liệu.
2. Đường kẻ ngang trong hộp: giá trị trung vị của dữ liệu.
3. Whiskers: các đường nối từ hộp đến các giá trị ngoài phạm vi hộp. Thông
thường, khoảng giữa whiskers và hộp bao gồm tất cả các giá trị nằm trong phạm
vi 1.5 lần khoảng cách giữa Q1 và Q3. Các giá trị ngoài phạm vi này được coi
là các giá trị ngoại lai và được đánh dấu trên đồ thị.

Đồ thị boxplot cung cấp một cách trực quan và đơn giản để khảo sát và so sánh phân
phối của dữ liệu trong một hoặc nhiều nhóm, giúp người dùng nhanh chóng nhận ra các
đặc tính của phân bố dữ liệu như sự phân tán của dữ liệu, sự tập trung của giá trị xung
quanh giá trị trung vị, sự xuất hiện của các giá trị ngoại lai và phân phối của dữ liệu.

Cụ thể ta dùng câu lênh dưới đây để tạo đồ thị boxplot cho từng biến của DataFrame

Sau khi thực hiện đoạn code trên ta thu được các đồ thị boxplot dưới đây:

35
§ Age

§ Giá trị trung vị (median): khoảng 35 tuổi


§ Phạm vi giá trị (range): khoảng cách giữa giá trị nhỏ nhất và lớn nhất là khoảng
14 tuổi đến 68 tuổi
§ Hộp (box) của biểu đồ bao phủ khoảng từ 28 tuổi đến 47 tuổi tương đương
khoảng giá trị từ Q1 đến Q3 (tức là 25% đến 75% của tập dữ liệu)
§ Có một số ngoại lệ (outliers) nằm ở phía trên của biểu đồ, cho thấy rằng có 1
người hơn 75 tuổi

36
§ Air Pollution

§ Giá trị trung vị (median): khoảng 3


§ Phạm vi giá trị (range): khoảng cách giữa giá trị nhỏ nhất và lớn nhất là khoảng
1 đến 8
§ Hộp (box) của biểu đồ bao phủ khoảng từ 3 6 tương đương khoảng giá trị từ
Q1 đến Q3 (tức là 25% đến 75% của tập dữ liệu)

37
§ Alcohol use

§ Giá trị trung vị (median): khoảng 5


§ Phạm vi giá trị (range): khoảng cách giữa giá trị nhỏ nhất và lớn nhất là khoảng
1 đến 8
§ Hộp (box) của biểu đồ bao phủ khoảng từ 2 đến 7 tương đương khoảng giá trị
từ Q1 đến Q3 (tức là 25% đến 75% của tập dữ liệu)

38
§ Dust Allergy, Occupational Hazards, Genetic Risk, Chronic Lung Disease,
Balanced Diet, Obesity,

§ Giá trị trung vị (median): của Balanced Diet, Chronic Lung Disease, Obesity
là 4 còn của Occupational Hazards, Genetic Risk là 5 và Dust Allergy là 6
§ Phạm vi giá trị (range): khoảng cách giữa giá trị nhỏ nhất và lớn nhất của
Occupational Hazards, Dust Allergy là khoảng 1 đến 8 và 3 bảng còn lại là 1
đến 7
§ Hộp (box) của biểu đồ bao phủ của Genetic Risk, Balanced Diet khoảng từ 2
đến 7; Obesity, Chronic Lung Disease khoảng từ 3 đến 7 và Dust Allergy
khoảng từ 3 đến 6 tương đương khoảng giá trị từ Q1 đến Q3 (tức là 25% đến
75% của tập dữ liệu)

39
§ Fatigue, Weight Loss, Shortness of Break, Wheezing, Swallowing Difficulty,
Clubbing of Finger Nails

§ Giá trị trung vị (median): Clubbing of Finger Nails, Shortness of Break,


Wheezing, Swallowing Difficulty là 4 còn Fatigue, Weight Loss là 3
§ Phạm vi giá trị (range): khoảng cách giữa giá trị nhỏ nhất và lớn nhất là khoảng
1 đến 8
§ Hộp (box) của biểu đồ của Fatigue, Wheezing, Swallowing Difficulty,
Clubbing of Finger Nails bao phủ khoảng từ 2 đến 5 và Weight Loss,
Shortness of Break bao phủ khoảng từ 2 đến 6 tương đương khoảng giá trị từ
Q1 đến Q3 (tức là 25% đến 75% của tập dữ liệu)

40
- Xử dụng đồ thị kdeplot

KDE plot (Kernel Density Estimate plot) là một biểu đồ mật độ xác suất được sử
dụng để trực quan hóa phân phối của dữ liệu. Điều đặc biệt về KDE plot là nó cho phép
ta xem xét phân phối xác suất của một biến liên tục mà không cần biến đổi dữ liệu
thành các bin hoặc histogram.
Một biểu đồ KDE plot thường sử dụng một kernel hạt (như Gaussian) để xác định
mật độ xác suất của các điểm dữ liệu xung quanh một điểm dữ liệu cụ thể trên trục x.
Điều này cho phép ta xây dựng một ước lượng liên tục của hàm mật độ xác suất (PDF)
của biến dữ liệu.
KDE plot thường được sử dụng để phát hiện sự phân tán của dữ liệu, phát hiện
các điểm ngoại lệ, kiểm tra giả định về phân phối của dữ liệu, so sánh các phân phối
của các nhóm dữ liệu khác nhau và tìm kiếm các đặc điểm quan trọng của dữ liệu như
đỉnh, sự biến động, độ dốc, v.v.
Cụ thể ta dùng câu lênh dưới đây để tạo đồ thị KDE plot cho từng biến của
DataFrame

41
Sau khi thực hiện đoạn code trên ta thu được các độ KDE plot như sau:

§ Age

Trên đồ thị này, đường cong màu xanh biểu thị mật độ xác suất của độ của tất cả
người có trong DataFrame. Chúng ta có thể nhận thấy rằng độ tuổi của bệnh nhân phân
bố nhiều ở mức khoảng 38 tuổi. Ngoài ra, chúng ta có thể thấy giá trị trung bình của đồ
thị nằm ở giữa của đồ thị đều này có nghĩa là có nhiều bênh nhân ở độ tuổi trung niên
mắc bệnh hơn.

42
§ Gender

Trên đồ thị này, đường cong màu xanh biểu thị mật độ xác suất của giới tính tất cả
người có trong DataFrame. Chúng ta có thể nhận thấy rằng đa phần bệnh nhân là nam và
nữ chiến chỉ hơn một nửa số bệnh nhân là nam giới

43
§ Air Pollution

Trên đồ thị này, đường cong màu xanh biểu thị mật độ xác suất của độ ô nhiễm
không khícủa nơi ở tất cả người có trong DataFrame. Chúng ta có thể nhận thấy rằng độ
ô nhiễm không khí nơi ở của bệnh nhân phân bố nhiều ở mức khoảng 2 và 6. Ngoài ra,
chúng ta có thể thấy giá trị trung bình của đồ thị nằm ở mức 2 tới 6 của đồ thị đều này có
nghĩa là có nhiều bệnh nhân ở khu ô nhiễm không khí .

44
§ Alcohol use

Trên đồ thị này, đường cong màu xanh biểu thị mật độ xác suất của mức độ sử dụng
đồ uống có cồn tất cả người có trong DataFrame. Chúng ta có thể nhận thấy rằng mức độ
sử dụng đồ uống có cồn nơi ở của bệnh nhân phân bố nhiều ở mức khoảng 2 và 8. Ngoài
ra, chúng ta có thể thấy giá trị trung bình của đồ thị nằm ở mức 2 tới 6 của đồ thị và bên
phải mảng đồ thị rộng hơn điều này thể hiện đa phần các bệnh nhân mắc bệnh có mức độ
sử dụng đồ uống có cồn nhiều.

45
§ Dust Allergy, Occupational Hazards, Genetic Risk, Chronic Lung Disease,
Balanced Diet, Obesity

Trên đồ thị này, đường cong màu xanh biểu thị mật độ xác suất của mức Dị ứng với
bụi, Nguy cơ nghề nghiệp, Rủi ro di truyền, Bệnh phổi mãn tính, Chế độ ăn uống cân
bằng, Béo phì của tất cả người có trong DataFrame. Chúng ta có thể nhận thấy rằng mức
độ Nguy cơ nghề nghiệp, Bệnh phổi mãn tính của các bệnh nhân phân bố nhiều ở mức 2
và 7; Rủi ro di truyền, Chế độ ăn uống cân bằng, Béo phì thì phân bố nhiều ở 2 và đặc
biệt là ở mức 6; cuối cùng là Dị ứng với bụi tập trung chủ yếu ở mất 7. Ngoài ra, chúng
ta có thể thấy giá trị trung bình của đồ thị Nguy cơ nghề nghiệp, Bệnh phổi mãn tính nằm
ở mức 1 tới 9 của đồ thị và bên trái mảng đồ thị rộng hơn điều này thể hiện đa phần các
bệnh nhân mắc bệnh Nguy cơ nghề nghiệp, Bệnh phổi mãn tính sẽ có nguya cơ ung thư
phổi cao; con phía đồ thị Rủi ro di truyền, Chế độ ăn uống cân bằng, Béo phì nằm ở mức
1 tới 9 của đồ thị và 2 phía trái phải đa phần bằng nhau nên có thể thấy khả năng người
có sẵn bệnh trên bị ung thư phổi rất là cao.

46
§ Fatigue, Weight Loss, Shortness of Break, Wheezing, Swallowing Difficulty,
Clubbing of Finger Nails

Trên đồ thị này, đường cong màu xanh biểu thị mật độ xác suất của mức Mệt mỏi,
Sụt cân, Hơi thở ngắn, Thở khò khè, Nuốt khó, Móng tay bị vàng của tất cả người có
trong DataFrame. Chúng ta có thể nhận thấy rằng mức độ Mệt mỏi, Sụt cân của các bệnh
nhân tập trung chủ yếu các bệnh nhân ở mức 2; Hơi thở ngắn, Thở khò khè, Nuốt khó của
các bệnh nhân phân bố nhiều ở mức 2 và 6; bảng còn lại phân bố nhiều ở 2 và đặc biệt
là ở mức 4; cuối cùng là Dị ứng với bụi tập trung chủ yếu ở mất 7. Ngoài ra, chúng ta có
thể thấy giá trị trung bình của đồ thị Mệt mỏi, Sụt cân nằm ở mức 1 tới 10 của đồ thị và
đồ thị có sự biến động nhiều ở các mức hơn điều này thể hiện đa phần các bệnh nhân
mắc bệnh trên sẽ có nguyacơ ung thư phổi cao; còn phía đồ thị Hơi thở ngắn, Thở khò
khè, Nuốt khi ta thấy đây là 3 độ thị biến động nhiều nhất phân bố ở cắc mức 2 và 6 nhiều
nên ta thấy được các bệnh nhân ung thư phổi thường có biểu hiện bệnh như trên.

47
2. Phân tích đa biến
Phân tích đa biến (Multivariate analysis) là một phương pháp khai phá dữ liệu dùng
để tìm hiểu mối quan hệ giữa nhiều biến đối với nhau. Trong phân tích đa biến, ta sử
dụng các kỹ thuật thống kê để khai thác thông tin từ nhiều biến độc lập, từ đó tìm ra các
mối quan hệ, sự phụ thuộc và sự tương tác giữa các biến.
Phân tích đa biến được áp dụng rộng rãi trong nhiều lĩnh vực, chẳng hạn như kinh tế
học, y học, khoa học xã hội, học máy và khoa học dữ liệu. Nó cung cấp các công cụ để
xác định các mối quan hệ phức tạp giữa các biến và cung cấp thông tin về sự phụ thuộc
giữa chúng. Các kỹ thuật phân tích đa biến thường được sử dụng bao gồm hồi quy tuyến
tính, phân tích thành phần chính (PCA), phân tích hành vi người tiêu dùng (CFA), phân
tích biến số và phân tích quyết định, và các kỹ thuật khác.
Phân tích đa biến giúp cải thiện độ chính xác và độ tin cậy của các mô hình dự đoán
và cung cấp thông tin quan trọng để giải thích các kết quả. Nó cho phép chúng ta hiểu
được cách các biến tương tác với nhau và ảnh hưởng lẫn nhau trong quá trình quyết định.
- Sử dụng heatmap
Đồ thị heatmap là một biểu đồ thể hiện dữ liệu bằng màu sắc, thường được sử dụng
để hiển thị mật độ hoặc tần suất của các giá trị trong một tập dữ liệu. Mỗi ô trên đồ thị
được gán một màu tương ứng với giá trị của nó trong tập dữ liệu, giúp ta dễ dàng nhận
ra các khu vực có mật độ cao hoặc thấp của các giá trị.
Đồ thị heatmap có nhiều ứng dụng, trong đó phổ biến nhất là trong phân tích dữ
liệu và khai thác dữ liệu. Ví dụ, nó có thể được sử dụng để tìm kiếm các mẫu trong các
tập dữ liệu lớn hoặc để phát hiện các xu hướng hoặc mô hình. Nó cũng có thể được sử
dụng để hiển thị mối quan hệ giữa các biến trong một tập dữ liệu.
Ngoài ra, đồ thị heatmap cũng có thể được sử dụng để trực quan hóa dữ liệu cho
mục đích trình bày và thuyết trình. Khi thực hiện việc trực quan hóa dữ liệu, đồ thị
heatmap giúp chúng ta dễ dàng hiểu và trình bày dữ liệu một cách rõ ràng và hấp dẫn
hơn.
Cụ thể ta dùng câu lênh dưới đây để tạo đồ thị heatmap cho các biến của
DataFrame

48
49
Sau khi thực hiện đoạn code trên, ta thu được đồ thị heatmap như hình dưới đây:

Biểu đồ này cho ta thấy tính tương quan giữa các thuộc tính của bộ dữ liệu “Lung
Cancer Prediction”. Trong đó mỗi giá trị trong bảng dữ liệu được đại diện bằng một màu
sắc, điều này giúp người dùng dễ dàng phát hiện ra các mối quan hệ và xu hướng giữa
các biến dữ liệu khác nhau. Đồ thị heatmap cho phép người dùng xác định các cặp biến
có tính tương quan cao nhất và thấp nhất, tương quan dương và tương quan âm. Trong
đồ thị heatmap này tính tương quan dương cao nhất được biểu thị bằng mà đỏ thâm ,
tương quan dương thấp hơn màu cam và thấp nhất màu da. Tính tương quan âm cao nhất
được biểu thị bằng màu xanh dương đậm, thấp hơn bằng màu xanh dương nhạt và thấp
nhất là màu da.

50
Cụ thể trong bài này ta xét tri tuyệt đối độ tương quan của chúng nằm trong khoảng:
• 0.75 – 1: Độ tương quan rất cao.
• 0.5 – 0.75: Độ tương quan cao.
• 25 – 0.75: Độ tương quan trung bình.
• 0 – 0.25: Độ tương quan thấp.

Trong đó với những giá trị thấp dưới 0.1 hầu như không co độ tương quan giữa các
thuộc tính. Với các giá trị tương quan cao trên 0.9 nếu chúng ta biết trước giá trị của một
thuộc tính, ta hầu như có thể suy ra giá trị của thuộc tính còn lại.
- Ví dụ:
1. "Shortness of Breath" và "Dry Cough" có mối tương quan dương mạnh
(0.501465), có thể cho thấy khi một người có triệu chứng khó thở thì họ cũng
có khả năng cao bị ho khan.
2. "Frequent Cold" và "Dry Cough" cũng có mối tương quan dương mạnh
(0.563611), cho thấy những người thường xuyên bị cảm cũng có khả năng
cao bị ho khan.
3. "Alcohol use" và "Clubbing of Finger Nails" có mối tương quan dương
(0.429550), có thể cho thấy người sử dụng rượu có khả năng cao hơn có
triệu chứng móng tay phình ra.
4. "Shortness of Breath" và "Swallowing Difficulty" có mối tương quan âm (-
0.222074), có thể cho thấy những người có triệu chứng khó thở có khả năng
thấp hơn bị khó nuốt.
5. "Age" và "Swallowing Difficulty" cũng có mối tương quan âm (-0.122408),
có thể cho thấy người càng già thì khả năng bị khó nuốt càng thấp.

51
CHƯƠNG V. KHAI PHÁ DỮ LIỆU

1. Đặt câu hỏi


Câu hỏi 1: Liệu tuổi có ảnh hưởng khả năng dự đán ung thư phổi trong bội dữ
liệu trên không ?
Tuổi có thể là một trong các yếu tố ảnh hưởng đến khả năng dự đoán ung thư phổi
trong bộ dữ liệu Lung Cancer Prediction. Tuổi càng cao, nguy cơ mắc ung thư phổi càng
tăng.
Câu hỏi 2: Đối với các biến phân loại như giới tính, hút thuốc, người hút thuốc
lâu năm, có yêu cầu tiền xử lý dữ liệu nào trước khi sử dụng Logistic Regression?
Bạn sẽ mã hóa các biến phân loại như thế nào?
Đối với Logistic Regression, biến phân loại thường được mã hóa bằng cách sử dụng
phương pháp "one-hot encoding" hoặc "dummy encoding". Trong trường hợp của giới
tính (nếu 1 là nam và 2 là nữ). Các biến khác như hút thuốc và người hút thuốc lâu năm
cũng có thể được xử lý tương tự, tùy thuộc vào cách chúng được mã hóa trong dữ liệu
gốc.
Câu hỏi 3: : XGBoost thường được biết đến với khả năng xử lý dữ liệu không cân
đối. Trong trường hợp bộ dữ liệu này có một tỷ lệ không cân đối giữa các trường
hợp mắc bệnh phổi và không mắc bệnh phổi, bạn sẽ điều chỉnh tham số nào trong
XGBoost để cải thiện hiệu suất của mô hình?
Trong XGBoost, nếu bộ dữ liệu có sự không cân đối, bạn có thể điều chỉnh tham số
scale_pos_weight. Tham số này có thể được sử dụng để tăng cường trọng số của các trường hợp
thiểu số trong quá trình học. Giá trị của scale_pos_weight có thể được đặt thành tỷ lệ của số
lượng trường hợp phổ biến trên số lượng trường hợp thiểu số.

52
2. Đề xuất thuật toán
Thuật toán K-Nearest Neighbors (KNN), Logistic Regression và XGBoost đều có những
đặc tính riêng biệt, tạo ra những lý do chính đáng để chúng được chọn để phân tích bộ dữ
liệu Lung Cancer Prediction. Dưới đây là một số lý do:
• K-Nearest Neighbors (KNN): Đây là thuật toán học máy có giám sát dựa trên cách
gần gũi, nó không tạo mô hình từ tập dữ liệu huấn luyện mà dự đoán dựa trên một
sự giống nhau đơn giản (tính bằng khoảng cách trong không gian đặc trưng). KNN
có thể rất hữu ích khi cấu trúc dữ liệu phức tạp và không dễ được mô hình hóa bởi
các phương pháp khác. Nó cũng có thể xử lý tốt các vấn đề phân loại đa lớp.
• Logistic Regression: Logistic Regression là một trong những thuật toán phân loại
tuyến tính đơn giản nhất và thường được sử dụng như điểm chuẩn (baseline) để so
sánh với các thuật toán phân loại khác. Nó hoạt động tốt khi các biến độc lập là
các biến liên tục và có quan hệ tuyến tính với xác suất logit của phản ứng. Logistic
Regression cũng giúp hiểu rõ hơn về mối quan hệ giữa các đặc trưng đầu vào và
kết quả dự đoán.
• XGBoost: XGBoost là một thuật toán học máy tăng cường gradient hiệu quả, linh
hoạt và nhanh chóng. Nó có khả năng xử lý dữ liệu phi tuyến tính và cung cấp một
hiệu suất phân loại tốt. XGBoost cũng được thiết kế để xử lý được dữ liệu không
cân đối và chống overfitting thông qua quá trình tinh chỉnh tham số. Ngoài ra,
XGBoost cung cấp thông tin quan trọng về tầm quan trọng của các đặc trưng trong
việc đưa ra dự đoán.

Tùy thuộc vào bản chất của dữ liệu và yêu cầu của bài toán, bạn có thể lựa chọn sử dụng
một hoặc cả ba thuật toán này. Thông thường, việc kết hợp nhiều thuật toán (ensemble)
có thể mang lại kết quả tốt hơn so với việc chỉ sử dụng một thuật toán duy nhất.

53
CHƯƠNG VI. ĐÁNH GIÁ VÀ CHỌN THUẬT
TOÁN

1. K-Nearest Neighbors (KNN)


1.1. K-Nearest Neighbors (KNN) là gì?
K-Nearest Neighbors (KNN) là một thuật toán học máy có giám sát đơn giản và
phổ biến. Nó hoạt động dựa trên nguyên tắc "độ tương tự" - các đối tượng tương tự nhau
thường nằm gần nhau. KNN có thể được sử dụng cho cả bài toán phân loại và hồi quy.
Trong bài toán phân loại, một điểm dữ liệu mới được phân loại dựa trên sự đa số
của các điểm dữ liệu gần nhất. Đối với hồi quy, giá trị của điểm dữ liệu mới được tính
bằng cách lấy trung bình (hoặc trung vị, hoặc một số thống kê khác) của các điểm dữ liệu
gần nhất.
1.2. Ưu điểm
• Thuật toán K-Nearest Neighbors (KNN) có những ưu điểm sau:
• Dễ hiểu và triển khai: KNN là một thuật toán đơn giản với mô hình hoá thưa
(lazy learning), không cần quá trình huấn luyện phức tạp.
• Độ chính xác cao và không cần giả định về phân phối dữ liệu: KNN không đặt ra
giả định về dữ liệu, giúp nó hoạt động tốt với dữ liệu phức tạp và phi tuyến tính.
• Đa dạng: KNN có thể được sử dụng cho cả phân loại và hồi quy.

1.3. Nhược điểm


• Mặc dù thuật toán K-Nearest Neighbors (KNN) có nhiều ưu điểm, nhưng nó
cũng có một số nhược điểm sau:
• Độ phức tạp tính toán cao: KNN cần tính toán khoảng cách giữa điểm dữ liệu cần
phân loại đến tất cả các điểm dữ liệu trong tập huấn luyện, do đó độ phức tạp của
thuật toán này tăng lên đáng kể khi kích thước dữ liệu tăng lên.
• Nhạy cảm với dữ liệu nhiễu: KNN dễ bị ảnh hưởng bởi nhiễu trong dữ liệu. Các
điểm dữ liệu nhiễu có thể gây ra kết quả dự đoán sai lệch.
• Dữ liệu không cân đối: KNN có thể không hoạt động tốt với dữ liệu không cân đối,
nơi một số lớp có nhiều mẫu hơn rất nhiều so với các lớp khác. Điều này có thể

54
dẫn đến việc phân loại sai lệch vì những lớp có nhiều mẫu hơn sẽ có nhiều điểm
gần hơn với điểm cần dự đoán.
• Không xác định mô hình: KNN không tạo ra một mô hình tổng quát cho dữ liệu,
nó chỉ đơn giản là lưu trữ toàn bộ tập dữ liệu huấn luyện. Do đó, không có khái
niệm "huấn luyện" trong KNN, mà chỉ có "dự đoán".
• Đòi hỏi chuẩn hóa dữ liệu: KNN sử dụng khoảng cách để xác định "láng giềng gần
nhất", nên nếu các thuộc tính có đơn vị đo lường hoặc phạm vi khác nhau, thuật
toán này có thể hoạt động không chính xác. Điều này yêu cầu việc chuẩn hóa dữ
liệu trước khi áp dụng KNN.

2. XGBoost
2.1. XGBoost là gì?
XGBoost (eXtreme Gradient Boosting) là một thuật toán học máy nổi tiếng
được sử dụng trong nhiều cuộc thi dữ liệu và dự án học máy do khả năng dự đoán
chính xác và hiệu quả về mặt tính toán.
XGBoost là một triển khai tối ưu của thuật toán Gradient Boosting, giúp tăng
tốc và cải thiện hiệu suất.
Gradient Boosting: Gradient Boosting là một phương pháp học máy cho cả các
tác vụ phân loại và hồi quy, nó tạo ra một mô hình dự đoán theo dạng một tập hợp
yếu (weak predictions). Mô hình đó được tạo thành từ nhiều mô hình nhỏ hơn
(thường là cây quyết định) trong một cách thức tuần tự, trong đó mỗi cây sau cố
gắng giảm thiểu lỗi của cây trước đó.
EXtreme Gradient Boosting (XGBoost): XGBoost cải tiến Gradient Boosting
thông qua cả thuật toán và lập trình. Nó sử dụng một mô hình tuyến tính hơn để
thay thế cây quyết định yếu, và cung cấp một khung làm việc tiện lợi và hiệu suất
cao để thực hiện Gradient Boosting. XGBoost cũng có thể xử lý dữ liệu phân tán
và không cân xứng một cách hiệu quả, giúp giảm thiểu thời gian tính toán.

55
XGBoost cũng tập trung vào tối ưu hóa việc tính toán và các vấn đề hiệu suất
khác, đồng thời cung cấp khả năng kiểm soát chặt chẽ quá trình huấn luyện thông
qua các tham số chuẩn hóa và tỉa cây.
2.2. Ưu điểm

Thuật toán XGBoost có nhiều ưu điểm, trong đó:


• Tốc độ và Hiệu suất: XGBoost được thiết kế để tối ưu hóa cả tốc độ lập trình và
hiệu suất mô hình, là một trong những thuật toán học máy nhanh và hiệu quả
nhất.
• Thư viện phong phú: XGBoost hỗ trợ nhiều ngôn ngữ lập trình bao gồm Python,
R, Java, Scala, Julia và hơn thế nữa.
• Thuật toán Tiên tiến: XGBoost sử dụng thuật toán Gradient Boosting tiên tiến,
cho phép tạo ra các mô hình học máy phức tạp bằng cách kết hợp nhiều mô hình
dự đoán yếu.
• Điều chỉnh linh hoạt: XGBoost cho phép điều chỉnh nhiều tham số mô hình, giúp
đạt được hiệu suất tối ưu cho nhiều loại tác vụ.
• Kiểm soát Overfitting: XGBoost có các tham số chuẩn hóa giúp kiểm soát
overfitting, điều này làm cho nó hoạt động tốt hơn một số thuật toán khác khi xử
lý dữ liệu học.

2.3. Nhược điểm

Mặc dù thuật toán XGBoost có nhiều ưu điểm, nhưng cũng có một số nhược điểm,
trong đó:
• Thời gian huấn luyện: XGBoost có thể mất nhiều thời gian để huấn luyện nếu
kích thước bộ dữ liệu lớn hoặc nếu có nhiều tham số cần phải được điều chỉnh.
Tuy nhiên, XGBoost cũng có các phương pháp như chéo, sub-sampling để giảm
thời gian huấn luyện.

56
• Đòi hỏi tinh chỉnh tham số: Dù XGBoost cung cấp rất nhiều tham số để tinh chỉnh
nhưng đối mặt với vấn đề là nếu không biết cách tinh chỉnh thì có thể không đạt
được kết quả tốt.
• Khó diễn giải: Như nhiều mô hình học máy phức tạp khác, XGBoost có thể khá
khó để diễn giải. Mặc dù có thể xem được tầm quan trọng của các đặc trưng,
nhưng việc diễn giải cấu trúc mô hình tổng thể là không dễ dàng.
• Không tối ưu cho dữ liệu nhỏ: Nếu tập dữ liệu quá nhỏ, việc sử dụng XGBoost
có thể không hiệu quả bởi nó được thiết kế để hoạt động tốt trên dữ liệu lớn.
• Không phù hợp với các tác vụ học sâu: XGBoost không phù hợp cho các tác vụ
liên quan đến học sâu như xử lý hình ảnh hoặc ngôn ngữ tự nhiên mà các mô hình
dựa trên mạng nơ-ron thường xử lý tốt hơn.

57
CHƯƠNG VII. KẾT QUẢ VÀ THẢO LUẬN
1. K-Nearest Neighbors (KNN)
Trong bài toán phân cụm dữ liệu bằng thuật toán K-Nearest Neighbors (KNN) này
ta tiến hành chia 2 tệp dữ liệu thành tập train và tập test. Sau đó ta khởi tạo mô hình
KNeighborsClassifier.

Sau khi 2 đoạn code trên ta tiếp tục thực hiện tính toán kết quả, dự đoán và tạo
confusion matrix bằng đoạn code dưới đây :

58
Và đây là kết quả ta thu được :

59
2. XGBoost
Trong bài toán phân cụm dữ liệu bằng thuật toán XGBoost này ta tiến hành tách tập
dữ liệu thành features (X) và target (y). Sau đó ta hia tập dữ liệu thành tập train và tập
test.Và khởi tạo mô hình XGBClassifier, tiếp tục ta huấn luyện mô hình với dữ liệu và
tính kết quả tính độ chính xác.

60
Sau khi đoạn code trên có kết quả là :

61
CHƯƠNG VIII. KẾT LUẬN
1. Kết luận về hiệu quả
Từ những thuật toán phân cụm trên ta có thể nhận thấy việc sử dụng bài toán phân cụm
trên bộ dữ liệu Red Wine Quality có thể mang lại nhiều hiệu quả như sau:
• Dự đoán Ung thư phổi: Với những thông tin như tuổi, giới tính, tiếp xúc với ô
nhiễm không khí, tiêu dùng rượu, dị ứng bụi, nguy cơ nghề nghiệp, rủi ro di
truyền, bệnh phổi mãn tính, chế độ ăn uống cân đối, béo phì, hút thuốc, hút thuốc
thụ động, đau ngực, ho ra máu, mệt mỏi, giảm cân, khó thở, tiếng hắt xì, khó
nuốt, móng tay bị phình, và ngáp nhiều, chúng ta có thể huấn luyện mô hình
phân loại để dự đoán liệu một bệnh nhân có khả năng mắc ung thư phổi hay
không.
• Xác định yếu tố quan trọng: Chúng ta cũng có thể sử dụng mô hình để xác định
những yếu tố nào quan trọng nhất trong việc dự đoán ung thư phổi. Điều này có
thể hữu ích trong việc xác định các yếu tố rủi ro và phát triển các chương trình
phòng ngừa
• Phân nhóm bệnh nhân: Dựa trên đặc điểm, chúng ta có thể phân nhóm bệnh
nhân dựa trên các yếu tố rủi ro và đặc điểm lâm sàng để giúp tạo ra các chiến
lược điều trị và quản lý cá nhân hóa.
Tóm lại, việc sử dụng bài toán phân cụm trên bộ dữ liệu Lung Cancer Prediction có
thể mang lại nhiều lợi ích cho ý tế, vừa giúp nhận biết nhóm bệnh nhân có nguy cơ cao
mắc bệnh và giúp đề xuất phuơng án phòng ngừa.
2. Khả năng áp dụng (ưu nhược điểm của phân loại)

Ưu điểm của bài toán phân loại


• Dễ hiểu và diễn giải: Phân loại thường rất trực quan và dễ hiểu, vì nó cung cấp
nhãn rõ ràng cho các mẫu dữ liệu. Ví dụ, trong bài toán phân loại spam, một email
có thể được phân loại là "spam" hoặc "không spam".
• Tiện lợi trong việc ra quyết định: Các mô hình phân loại thường cung cấp kết
quả dưới dạng nhãn, giúp việc ra quyết định trở nên trực tiếp và dễ dàng hơn.
62
• Có thể xử lý dữ liệu lớn: Nhiều thuật toán phân loại có thể xử lý hiệu quả với dữ
liệu lớn, giúp ta có thể đưa ra dự đoán trên hàng triệu, thậm chí hàng tỷ mẫu dữ
liệu.

Nhược điểm của bài toán phân loại


• Dữ liệu mất cân bằng: Khi một lớp có số lượng mẫu dữ liệu lớn hơn nhiều so với
lớp khác, hiệu suất của mô hình phân loại có thể giảm. Mô hình có thể thiên vị về
lớp có nhiều mẫu dữ liệu hơn và dẫn đến kết quả phân loại không chính xác.
• Yêu cầu dữ liệu đã được gán nhãn: Bài toán phân loại thuộc về học có giám sát,
nghĩa là nó đòi hỏi dữ liệu đầu vào phải được gán nhãn một cách chính xác. Việc
thu thập và gán nhãn dữ liệu có thể tốn kém và mất thời gian.
• Bị ảnh hưởng bởi nhiễu: Nếu dữ liệu chứa nhiều nhiễu, ví dụ như các giá trị sai
lệch hoặc không phù hợp, hiệu suất của mô hình phân loại có thể bị ảnh hưởng
đáng kể.
• Giả định về dữ liệu: Một số thuật toán phân loại (như phân loại Naive Bayes) có
các giả định cụ thể về dữ liệu, như sự độc lập giữa các đặc trưng. Nếu các giả định
này không phù hợp với dữ liệu, kết quả phân loại có thể không chính xác.
• Việc chọn ngưỡng phân loại: Trong một số trường hợp, việc xác định ngưỡng để
phân loại một mẫu vào một lớp cụ thể có thể khó khăn. Ngưỡng này có thể phụ
thuộc vào ngữ cảnh cụ thể của bài toán và có thể không dễ dàng để xác định.
• Khó xử lý dữ liệu có cấu trúc phức tạp: Một số thuật toán phân loại có thể không
hoạt động tốt với dữ liệu có cấu trúc phức tạp, như dữ liệu văn bản hoặc dữ liệu
chuỗi thời gian.

63
3. Đề xuất cải tiến
Để cải tiến những nhược điểm của bài toán phân loại, có thể thực hiện các đề xuất như
sau:
• Xử lý dữ liệu mất cân bằng: Có nhiều kỹ thuật để xử lý dữ liệu mất cân bằng,
bao gồm chúng ta có thể sử dụng undersampling, oversampling, hay SMOTE
(Synthetic Minority Over-sampling Technique). Một số thuật toán học máy cũng
có thể điều chỉnh để xử lý dữ liệu mất cân bằng, ví dụ như cung cấp trọng số cho
các lớp khác nhau.
• Cải thiện quá trình gán nhãn dữ liệu: Sử dụng công cụ tự động hoặc bán tự động
để gán nhãn dữ liệu có thể giúp giảm thời gian và công sức cần thiết cho việc này.
Cũng có thể xây dựng một mô hình học máy ban đầu để gán nhãn cho dữ liệu, sau
đó chỉnh sửa những nhãn mà mô hình gán không chính xác.
• Tiền xử lý dữ liệu để giảm nhiễu: Kỹ thuật tiền xử lý dữ liệu như làm sạch dữ
liệu, chuẩn hóa, điền dữ liệu bị thiếu, và phát hiện và loại bỏ ngoại lệ có thể giúp
giảm nhiễu trong dữ liệu.
• Lựa chọn thuật toán phù hợp: Không phải tất cả các thuật toán phân loại đều có
những giả định giống nhau về dữ liệu. Do đó, việc lựa chọn một thuật toán phù
hợp với dữ liệu cụ thể có thể giúp cải thiện hiệu suất.
• Thiết lập ngưỡng phù hợp: Sử dụng các phương pháp như ROC curve và
Precision-Recall curve để xác định ngưỡng phân loại tối ưu.
• Sử dụng thuật toán phức tạp hơn: Đối với dữ liệu có cấu trúc phức tạp, chúng
ta có thể sử dụng những thuật toán phân loại phức tạp hơn như mạng nơ-ron sâu
(deep neural networks) hoặc các mô hình chuỗi thời gian như LSTM.

64
CHƯƠNG IX. TÀI LIỆU THAM KHẢO
https://www.kaggle.com/code/subhajeetdas/lung-cancer-prediction
https://www.w3schools.com/python/
https://drive.google.com/file/d/1PpBxkOiJPRcyaO4p6l6Xk5UqeQhVpNL2/view?fbclid=
IwAR1poCIBIfVbrTlYQFKiFWctq4sBDPN7j3bR9Gte3KrL4FfhlOgqisF-Asc

65

You might also like