TranCaoMinh 2000004265 BaoCaoCuoiKi LapTrinhTTNT

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

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

BÁO CÁO CUỐI KÌ

XÂY DỰNG MÔ HÌNH PHÂN LỚP VỚI THUẬT


TOÁN NAIVE BAYES

Giảng viên hướng dẫn: Ths. BÙI TIẾN ĐỨC


Sinh viên thực hiện: TRẦN CAO MINH
MSSV: 2000004265
Chuyên ngành: TRÍ TUỆ NHÂN TẠO
Môn học: LẬP TRÌNH TRÍ TUỆ NHÂN TẠO
Khóa: 2021-2022

Tp.HCM, tháng 09 năm 2022


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

BÁO CÁO CUỐI KÌ

XÂY DỰNG MÔ HÌNH PHÂN LỚP VỚI THUẬT


TOÁN NAIVE BAYES

Giảng viên hướng dẫn: Ths. BÙI TIẾN ĐỨC


Sinh viên thực hiện: TRẦN CAO MINH
MSSV: 2000004265
Chuyên ngành: TRÍ TUỆ NHÂN TẠO
Môn học: LẬP TRÌNH TRÍ TUỆ NHÂN TẠO
Khóa: 2021-2022

Tp.HCM, tháng 09 năm 2022


Lời cảm ơn
Lời đầu tiên, em chân thành gửi lời cảm ơn tới thầy BÙI TIẾN ĐỨC đã giúp đỡ em
cũng như lớp trong suốt môn học.
Trong quá trình học tập và tìm hiểu về bộ môn “LẬP TRÌNH TRÍ TUỆ NHÂN TẠO”,
thầy đã rất tận tuỵ và hỗ trợ nhiệt tình cho em, lớp. Thầy đã giúp em tích luỹ được thêm
nhiều kiến thức để có thể dần dần hoàn thiện ước mơ về công nghệ thông tin của mình.
Thông qua báo cáo giữa kì này, em muốn thể hiện tổng quan về tất cả kiến thức thầy đã
truyền đạt cho em đến thời điểm hiện tại.
Trong thời gian thực hiện đồ án cuối kì của môn học để có được một kết quả nộp thầy sẽ
không tránh được những thiếu sót, em mong thầy xem xét và đưa ra những nhận xét,
góp ý chân thành để đồ án được hoàn thiện hơn.
Kính chúc thầy nhiều sức khoẻ, thành công trên con đường truyền đạt tri thức của mình.
Em cảm ơn thầy!
Lời mở đầu
Trước hết xin nói về chữ 'trí tuệ nhân tạo', vốn được dùng rộng rãi trong cộng đồng
Công nghệ thông tin. Trí tuệ nhân tạo, tiếng Anh là Artificial Intelligence hay chữ viết
tắt được dùng phổ biến là AI, còn có thể hiểu bình dân hơn là 'thông minh nhân tạo', tức
là sự thông minh của máy móc do con người tạo ra, đặc biệt tạo ra cho máy tính, robot,
hay các máy móc có các thành phần tính toán điện tử. Trí tuệ nhân tạo là một lĩnh vực
của khoa học và công nghệ nhằm làm cho máy có những khả năng của trí tuệ và trí
thông minh của con người, tiêu biểu như biết suy nghĩ và lập luận để giải quyết vấn đề,
biết giao tiếp do hiểu ngôn ngữ và tiếng nói, biết học và tự thích nghi, dựa trên các mô
hình máy học (Machine Learning) và khai phá dữ liệu (Data Mining).

Tập dữ liệu (Dataset) cung cấp 'nhiên liệu' cho các mô hình AI cũng giống như xăng
hoặc điện cho ô tô. Cho dù nhiệm vụ của chúng là tạo văn bản, nhận dạng đối tượng hay
dự đoán giá cổ phiếu của công ty, hệ thống AI đều 'học' bằng cách chọn lọc qua vô số ví
dụ để phân biệt các mẫu trong dữ liệu. Ví dụ, một hệ thống thị giác máy tính (computer
vision) có thể được đào tạo để nhận ra một số vật thể đã được 'học' trước đó,...

Dữ liệu chính là một kho tàng tài nguyên khổng lồ của doanh nghiệp. Bởi vì có quá
nhiều dữ liệu nếu như không được sắp xếp phân nhóm sẽ dễ bị mất, tốn kém nhiều thời
gian cho việc tìm kiếm hay thực hiện mã hóa Encryption và việc sử dụng sau này.
Bên cạnh đó, việc thực hiện phân loại dữ liệu giúp doanh nghiệp dễ dàng quản lý dữ liệu
tránh việc thất thoát. Từ đó tiết kiệm chi phí cho các giải pháp Data Loss Prevention
trong tương lai.
Sau đây là những lợi ích của việc phân loại dữ liệu đem lại:
- Xác định được các loại data có giá trị trong tổ chức, doanh nghiệp.
- Việc phân loại rõ ràng và cụ thể các dữ liệu sẽ giúp cho việc lựa chọn các giải
pháp bảo vệ dữ liệu nhanh chóng và phù hợp hơn
- Dữ liệu được phân loại rõ ràng sẽ giúp doanh nghiệp, tổ chức dựa vào đó để
thiết lập hệ thống phân quyền truy cập cho các cá nhân, từ đó sẽ tạo ra được hiểu
quả trong việc sử dụng dữ liệu.
- Việc tiến hành phân loại thể hiện được sự chuyên nghiệp của các tổ chức.
Doanh nghiệp trong việc bảo vệ tài nguyên dữ liệu có giá trị của khách hàng và
chính doanh nghiệp.

Ta sẽ áp dụng Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên
A khi biết sự kiện liên quan B đã xảy ra. Xác suất này được ký hiệu là P(A|B), và đọc là
“xác suất của A nếu có B”. Đại lượng này được gọi xác suất có điều kiện hay xác suất
hậu nghiệm vì nó được rút ra từ giá trị được cho của B hoặc phụ thuộc vào giá trị đó.

- Dựa trên định lý của Bayes


+ Phân loại Naïve Bayesian
 Giả định: độc lập có điều kiện lớp (class conditional independence)
+ Phân loại Bayesian belief networks
- Phương pháp phân loại dựa trên xác suất Naïve Bayes tính xác suất cho các yếu tố,
sau đó chọn kết quả với xác suất cao nhất.

Tuy nhiên, ta cần lưu ý giả định của thuật toán Naive Bayes là các yếu tố đầu vào được
cho là độc lập với nhau.
PHẦN NHẬN XÉT + CHẤM ĐIỂM CỦA GIẢNG VIÊN
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
Điểm giáo viên hướng dẫn:.....................................................................
.......................................................................................................
.......................................................................................................
Điểm giảng viên chấm vòng 2:.................................................................
.......................................................................................................
.......................................................................................................
.......................................................................................................
TPHCM, Ngày …… tháng …… năm
Giáo viên chấm vòng 2 Giáo viên hướng dẫn

MỤC LỤC
Lời cảm ơn..................................................................................................................................................i
Lời mở đầu................................................................................................................................................ii
PHẦN NHẬN XÉT + CHẤM ĐIỂM CỦA GIẢNG VIÊN...................................................................................iv
MỤC LỤC....................................................................................................................................................v
DANH MỤC HÌNH.....................................................................................................................................vii
Chương 1. Giới thiệu đề tài.......................................................................................................................1
1.1 Lý do chọn đề tài.............................................................................................................................1
1.2 Mô tả và hướng xây dựng của đề tài...............................................................................................1
1.3 Môi trường cài đặt...........................................................................................................................1
Chương 2. Lý thuyết..................................................................................................................................3
2.1 Định lý Bayes là gì............................................................................................................................3
2.1.1 Giải thích các kí hiệu trong công thức Bayes.............................................................................3
2.2 Phân lớp Naïve Bayes......................................................................................................................4
2.2.1 Cách để xây dựng mô hình phân lớp Naïve Bayes....................................................................4
2.2.2 Tập dữ liệu mẫu........................................................................................................................4
2.2.3 Tính phân lớp của mẫu A..........................................................................................................5
Chương 3. Xây dựng thuật toán phân lớp.................................................................................................7
3.1 Quy trình khai phá tri thức..............................................................................................................7
3.1.1 Phân tích mô hình.....................................................................................................................7
3.1.2 Giải thích mô hình.....................................................................................................................8
Chương 4 Dựa Trên Naïve Bayes Xây Dựng Mô Hình Machine Learning Bằng Ngôn Ngữ Python...........10
4.1 Các thư viện cần thiết....................................................................................................................10
4.1.1 Thư viện Pandas.....................................................................................................................10
4.1.2 Thư viện Scikit-learn...............................................................................................................10
4.2 Tiến hành viết lệnh........................................................................................................................10
4.3 Các bước để chạy mô hình Machine Learning trên Google Colaboratory.....................................13
Kết luận...................................................................................................................................................16
Hướng phát triển trong tương lai............................................................................................................16
Tài liệu kham khảo...................................................................................................................................17

DANH MỤC HÌNH


Hình 1 Bảng dữ liệu giả lập...........................................................................................................5
Hình 2 Quy trình khai phá tri thức.................................................................................................7
Hình 3 Trực quan bảng dữ liệu sau khi chuyển thành số nguyên................................................11
Hình 4 Kết quả mà máy học được dựa trên bảng dữ liệu giả lập mà ta đã áp vào......................13
Hình 5 Khởi chạy bước 1.............................................................................................................13
Hình 6 Khởi chạy bước 2.............................................................................................................14
Hình 7 Khởi chạy bước 3.............................................................................................................14
Hình 8 Khởi chạy bước 4.............................................................................................................14
Hình 9 Khởi chạy bước 5............................................................................................................15
Hình 10 Xem kết quả và đánh giá độ chính xác của model máy học..........................................15
Chương 1. Giới thiệu đề tài

1.1 Lý do chọn đề tài


Naïve Bayes Classification (NBC) là một thuật toán dựa trên định lý Bayes về lý thuyết
xác suất để đưa ra các dự đoán cũng như phân loại dữ liệu dựa trên các dữ liệu được
quan sát và thống kê. Naïve Bayes Classification là một trong những thuật toán được
ứng dụng rất nhiều trong các lĩnh vực Machine learning dùng để đưa các dự đoán dựa
trên một tập dữ liệu đã được thu thập, độ phúc tạp của thuật toán thấp, thời gian huấn
luyện mô hình nhỏ, phù hợp với các mô hình dữ liệu vừa phải. Nó thuộc vào nhóm
Supervised Machine Learning Algorithms (học có giám sát) vì thế nó khá dễ hiểu và độ
chính xác tương đối cao

1.2 Mô tả và hướng xây dựng của đề tài


Sử dụng định lý Naïve Bayes để phân lớp và gán nhãn cho dữ liệu từ bộ dữ liệu đã cho
trước, bỏ qua các vấn đề về tiền xử lý dữ liệu.
- Ta sẽ tách các dòng từ bảng dữ liệu thành hai phần:
+ Train: Dùng để cho máy học.
+ Test: Dùng để kiểm tra lại kết quả máy học.
-  Tức là máy sẽ học từ các ví dụ từ và các mẫu dữ liệu đã có sau đó sẽ đánh giá lại sai
số của mô hình.
- Tiến hành viết lệnh bằng ngôn ngữ Python và thực thi trên môi trường Google
Colaboratory.

1.3 Môi trường cài đặt


Môi trường:
- Ngôn ngữ: Python 3
Sản phẩm được viết và thực thi tại Google Colaboratory
Bộ dữ liệu được lưu trữ tại GitHub
- Địa chỉ mã nguồn:
https://colab.research.google.com/drive/1h-
96ocsY1AYT6B4ynhqMba79ULPen9qS?authuser=3

- Địa chỉ file dữ liệu :


https://raw.githubusercontent.com/CaoMinhh/file-dulieu-tieuduong/
main/DataTest.csv
Chương 2. Lý thuyết

2.1 Định lý Bayes là gì


Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên A khi biết sự
kiện liên quan B đã xảy ra. Xác suất này được ký hiệu là P(A|B), và đọc là "xác suất
của A nếu có B". Đại lượng này được gọi là xác suất có điều kiện hay xác suất hậu
nghiệm vì nó được rút ra từ giá trị được cho của B hoặc phụ thuộc vào giá trị đó.
- Theo định lý Bayes, xác suất xảy ra A khi biết B sẽ phụ thuộc vào 3 yếu tố:
+ Xác suất xảy ra A của riêng nó, không quan tâm đến B. Ký hiệu là P(A) và đọc
là xác suất của A. Đây được gọi là xác suất biên duyên hay xác suất tiên nghiệm, nó là
"tiên nghiệm" theo nghĩa rằng nó không quan tâm đến bất kỳ thông tin nào về B.
+ Xác suất xảy ra B của riêng nó, không quan tâm đến A. Ký hiệu là P(B) và đọc
là "xác suất của B". Đại lượng này còn gọi là hằng số chuẩn hóa (normalising constant),
vì nó luôn giống nhau, không phụ thuộc vào sự kiện A đang muốn biết.
+ Xác suất xảy ra B khi biết A xảy ra. Ký hiệu là P(B|A) và đọc là "xác suất của
B nếu có A". Đại lượng này gọi là khả năng (likelihood) xảy ra B khi biết A đã xảy ra.
Chú ý không nhầm lẫn giữa khả năng xảy ra B khi biết A và xác suất xảy ra A khi biết
B.
Khi biết ba đại lượng này, xác suất của A khi biết B cho bởi công thức:
P(B∨A)∗P( A)
P( A∨B)=
P(B)

2.1.1 Giải thích các kí hiệu trong công thức Bayes


Từ công thức Bayes trên ta có :
 A: Một mẫu (đối tượng), thuộc về một phân lớp B
 B: Phân lớp (ví dụ phân lớp là Yes - No, Có – Không, 0 – 1,…)
 P(A): Xác suất của giả thuyết C đúng (khi chưa có chứng cứ)
 P(B): Xác suất quan sát được chứng cứ B
 P(A | B) : Xác suất của giả thuyết A đúng khi có chứng cứ B
 P(B | A): Xác suất nhìn thấy chứng cứ B khi biết giả thuyết A đúng

2.2 Phân lớp Naïve Bayes


Dựa trên Định lý Bayes, nhưng đưa ra giả thiết “ngây thơ” rằng mọi thuộc tính độc lập
với nhau.
Với giả thuyết trên các thuộc tính sẽ hoàn toàn độc lập với nhau, nhưng trong thực tế
những thuộc tính sẽ không độc lập với nhau.
Ví dụ: Trời nắng sẽ ảnh hưởng tới nhiệt độ. Tuổi cao sẽ ảnh hưởng đến khả năng
ghi nhớ bài học,…
2.2.1 Cách để xây dựng mô hình phân lớp Naïve Bayes
Mẫu số P(B) không phụ thuộc vào dữ liệu đầu vào và lớp A
→ Không nhất thiết phải tính để phân lớp.

Với P(A | B), P(A) và P(B) được tính từ tập dữ liệu


→ Phân lớp của mẫu B sao cho P(A | B) là lớn nhất.
2.2.2 Tập dữ liệu mẫu
- Cho tập dữ liệu mẫu có 4 cột
+ Cột ‘CongTy’ mô tả về công ty làm việc: nhận 4 giá trị
+ Cột ‘CongViec’ mô tả về vị trí làm việc ở công ty đó: nhận 3 giá trị
+ Cột ‘BangCap’ mô tả về bằng cấp khi làm việc ở công ty đó: nhận 2 giá trị
+ Cột ‘LuongTren_20Trieu’ mô tả về mức khi ở công ty đó: nhận 2 giá trị
Hình 1 Bảng dữ liệu giả lập

2.2.3 Tính phân lớp của mẫu A


Cho phân lớp giả lập mẫu A=(CongTy = FPT_sof, CongViec = Banhang,
BangCap=Thacsi)
- Lúc này ta cần tính:
 P(Luong20Trieu = Co) * P( A | Luong20Trieu = Co) = P(Luong20Trieu = Co) *
P(CongTy = FPT_sof | Luong20Trieu = Co) * P(CongViec = Banhang | Luong20Trieu
= Co) * P(BangCap=Thacsi | Luong20Trieu = Co)
 P(Luong20Trieu = Khong) * P( A | Luong20Trieu = Khong) = P(Luong20Trieu =
Khong) * P(CongTy = FPT_sof | Luong20Trieu = Khong) * P(CongViec = Banhang |
Luong20Trieu = Khong) * P(BangCap=Thacsi | LuongT20Trieu = Khong)
- Sau khi quan sát bảng dữ liệu giả lập trên ta thu được trên 23 dòng dữ liệu:
 P(Luong20Trieu = Co) = 14/23
 P(Luong20Trieu = Khong) = 9/23

 P(CongTy = FPT_sof | Luong20Trieu = Co) = 4/14


 P(CongTy = FPT_sof | Luong20Trieu = Khong) = 2/9

 P(CongViec = Banhang | Luong20Trieu = Co) = 3/14


 P(CongViec = Banhang | Luong20Trieu = Khong) = 3/9

 P(BangCap=Thacsi | LuongT20Trieu = Co) = 11/14


 P(BangCap=Thacsi | Luong20Trieu = Khong) = 2/9

- Tính toán phân lớp dựa vào định lý Naïve Bayes


P(Luong20Trieu = Co) * P(A | Luong20Trieu = Co)
= (14/23) * (4/14) * (3/14) * (11/14)
= 0.0292

P(Luong20Trieu = Khong) * P(A | Luong20Trieu = Khong)


=(9/23) * (2/9) * (3/9) * (2/9)
= 0.0064

⟹ Vậy kết luận mẫu A thuộc phân lớp Luong20Trieu = Co


Chương 3. Xây dựng thuật toán phân lớp

3.1 Quy trình khai phá tri thức


- Quá trình xử lý dữ liệu thô/gốc (raw/original data) nhằm cải thiện chất lượng dữ liệu
(quality of the data) và do đó cải thiện chất lượng của kết quả khai phá
- Chất lượng dữ liệu (data quality): tính chính xác, tính hiện hành, tính toàn vẹn, tính
nhất quán

Hình 2 Quy trình khai phá tri thức

3.1.1 Phân tích mô hình


- Làm sạch dữ liệu (data cleaning/cleansing): loại bỏ nhiễu (Remove noise), hiệu chỉnh
những phần dữ liệu không nhất quán (Correct data inconsistencies)
- Tích hợp dữ liệu (Data integration): từ nhiều nguồnkhác nhau vào một kho dữ liệu
- Biến đổi dữ liệu (Data transformation): chuẩn hoá dữ liệu (Data normalization)
- Thu giảm dữ liệu (Data reduction):
+ Thu giảm kích thước dữ liệu (nghĩa là giảm số phần tử) bằng kết hợp dữ liệu
(Data Aggregation), gom cụm dữ liệu
+ loại bỏ các đặc điểm dư thừa (redundant features) giảm số chiều/thuộc tính dữ
liệu
3.1.2 Giải thích mô hình
- Làm sạch dữ liệu:
+ Xử lý dữ liệu bị thiếu (Missing data)
 Nguyên nhân: không tồn tại lúc nhập liệu, sự cố,…
 Giải pháp: Bỏ qua dòng dữ liệu đó, cập nhật bằng tay, dùng giá trị
thay thế (tự động): hằng số toàn cục, trị phổ biến, trung bình (toàn
cục, cục bộ), trị dự đoán,… Ngăn chặn từ ban đầu: thiết kế tốt
CSDL và các thủ tục nhập liệu (các ràng buộc dữ liệu)

+ Nhận diện phần tử biên (Outliers) và giảm thiểu nhiễu (Noisy data)
 Nguyên nhân: (công cụ thu thập dữ liệu, lỗi trên đường truyền,
giới hạn công nghệ,
 Giải pháp: Dựa trên phân bố thống kê, Dựa trên mật độ, Hồi quy,
Phân tích cụm,…

+ Xử lý dữ liệu không nhất quán (Inconsistent data)


 Nguyên nhân: Không nhất quán trong các qui ước đặt tên hay mã
hóa, Định dạng không nhất quán của các vùng nhập liệu, Thiết bị
ghi nhận dữ liệu, …
 Giải pháp: Tận dụng siêu dữ liệu, ràng buộc dữ liệu, sự kiểm tra
của nhà phân tích dữ liệu cho việc nhận diện, Điều chỉnh dữ liệu
không nhất quán bằng tay,…
- Tích hợp dữ liệu:
+ Quá trình tập hợp dữ liệu từ các nguồn khác nhau vào một kho dữ liệu sẵn sàng
cho quá trình Khai Phá Dữ Liệu
+ Vấn đề nhận dạng thực thể (Entity identification problem)
 Tích hợp lược đồ (Schema integration)
 So trùng đối tượng (Object matching)
+ Vấn đề dư thừa (Redundancy)
+ Vấn đề mâu thuẫn giá trị dữ liệu (Data value conflicts)

- Biến đổi dữ liệu


+ Làm trơn dữ liệu (Smoothing)
+ Kết hợp dữ liệu (Aggregation)
+ Tổng quát hoá (Generalization)
+ Chuẩn hoá (Normalization)
+ Xây dựng thuộc tính/đặc tính (Attribute/Feature construction)

- Thu giảm dữ liệu


+ Các chiến lược thu giảm
 Kết hợp khối dữ liệu (Data cube aggregation)
 Chọn một số thuộc tính (Attribute subset selection)
 Thu giảm chiều (Dimensionality reduction)
 Thu giảm lượng (Numerosity reduction)
 Rời rạc hóa (Discretization)
 Tạo phân cấp ý niệm (concept hierarchy generation)
Chương 4 Dựa Trên Naïve Bayes Xây Dựng Mô Hình Machine
Learning Bằng Ngôn Ngữ Python
- Giả thuyết rằng bộ dữ liệu ta có là dữ liệu chuẩn, không cần phải xử lý lại.
- Giả sử tên các cột và các giá trị trong bảng dữ liệu là thật và đã được xử lý.

4.1 Các thư viện cần thiết


4.1.1 Thư viện Pandas
Là một thư viện Python cung cấp các cấu trúc dữ liệu nhanh, mạnh mẽ, linh hoạt và
mang hàm ý. Tên thư viện được bắt nguồn từ panel data (bảng dữ liệu). Pandas được
thiết kế để làm việc dễ dàng và trực quan với dữ liệu có cấu trúc (dạng bảng, đa chiều,
có tiềm năng không đồng nhất) và dữ liệu chuỗi thời gian.

4.1.2 Thư viện Scikit-learn


Sklearn được thiết kế để xử lý các thư viện số và khoa học của Python như NumPy và
SciPy. Các tính năng chính của thư viện Scikit-learning bao gồm thuật toán phân loại,
hồi quy và phân cụm (hỗ trợ máy vectơ, rừng ngẫu nhiên, tăng độ dốc, k-means và
DBSCAN).

4.2 Tiến hành viết lệnh


- Đầu tiên ta gọi thư viện và đọc file csv
# Bước 1: Khởi tạo thư viện và đọc file data CSV
# Gọi thư viện
import pandas as pd
from sklearn.preprocessing import LabelEncoder

# Load file dữ liệu .csv
url='https://raw.githubusercontent.com/CaoMinhh/file-dulieu-tieuduong/main/DataTest.csv'
df = pd.read_csv(url)

- Sau đó ta đặt biến phụ thuộc (x) và biến độc lập (y)
# lấy tất cả các cột để làm biến độc lập trừ cột LuongTren_20Trieu
inputs = df.drop('LuongTren_20Trieu', axis='columns') 

# Lấy cột LuongTren_20Trieu để làm biến phụ thuộc
targets = df['LuongTren_20Trieu']

- Do dữ liệu từ file csv là kiểu chuỗi nên ta tiến hành dùng hàm LabelEncoder() từ thư
viện sklearn để chúng thành số nguyên để máy tính có thể hiểu được
# Bước 2: Conver dữ liệu text sang number
# chuyển các giá trị trong data từ dữ liệu text sang number (do máy tính chỉ xử lý được data có giá trị là số)
le_Congty = LabelEncoder()
le_Congviec = LabelEncoder()
le_Bangcap = LabelEncoder()

inputs['Công ty'] = le_Congty.fit_transform(inputs['CongTy'])
inputs['Công việc'] = le_Congviec.fit_transform(inputs['CongViec'])
inputs['Bằng cấp'] = le_Bangcap.fit_transform(inputs['BangCap'])

- Lúc này trong bảng dữ liệu gốc của ta có thêm các cột giá trị vừa chuyển đổi thành số

Hình 3 Trực quan bảng dữ liệu sau khi chuyển thành số nguyên

- Ta tiến hành xoá bỏ cột có các giá trị là kiểu chuỗi bằng drop()
inputs_n = inputs.drop(['CongTy', 'CongViec', 'BangCap',],axis='columns')
print(inputs_n)
- Lúc này ta sẽ tách bảng dữ liệu thành 2 phần là train và test
- Ta sẽ lấy ra 70% của bảng dữ liệu để cho máy học và dùng 30% còn lại để kiểm tra độ
chính xác
# Bước 3: Tạo model từ cây phân loại là đưa nó vào máy học
# Tạo model và đưa nó vào máy học
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(inputs_n,targets,test_size=0.3)

from sklearn.naive_bayes import GaussianNB
# Đại diện cho Gaussian Naive Bayes
model = GaussianNB()

# Đưa dữ liệu vào model máy học dựa trên Naive Bayes 
model.fit(X_train,y_train)

- Dùng model.core để đánh giá lại mô hình chính xác bao nhiêu phần trăm
# Bước 4: Đánh giá mô hình máy học
# Đánh giá độ chính xác của mô hình
doChinhXac = model.score(X_test,y_test)

# Đếm số dòng dùng để học và kiểm tra
sizeHocMay = (round(len(X_train) / len(inputs) , 2))
sizeKiemTra = (round(len(X_test) / len(inputs) , 2))

- Sau đó ta tiến hành in kết quả thu được sau khi chạy model
# Bước 5: Xuất kết quả
print(f'Từ tập dữ liệu có {len(inputs)} dòng ta lấy ra {sizeHocMay*100}% cho máy học và dùng {sizeKiemT
ra*100}% để kiểm tra')

print(f'Số dòng máy học: {len(X_train)} \nSố dòng kiểm tra: {len(X_test)} \n')

print(f'Kết quả máy dự đoán ra: \n{y_test[0:5]} \n')

print(f'Kết quả thực tế: \n{model.predict(X_test[0:5])}')

print(f'Độ chính xác của model máy học: {doChinhXac*100}% \n')
- Ví dụ khi ta khởi chạy, model sẽ trả về kết quả mà máy học được dựa trên bảng dữ liệu
giả lập mà ta đã áp vào:

Hình 4 Kết quả mà máy học được dựa trên bảng dữ liệu giả lập mà ta đã áp vào

4.3 Các bước để chạy mô hình Machine Learning trên Google Colaboratory
- Truy cập vào địa chỉ mã nguồn ở 4.1 sau đó tiến hành các bước như sau:
Bước 1: Khởi tạo thư viện và đọc file data CSV

Hình 5 Khởi chạy bước 1

Bước 2: Conver dữ liệu text sang number


Hình 6 Khởi chạy bước 2

Bước 3: Tạo model từ cây phân loại là đưa nó vào máy học

Hình 7 Khởi chạy bước 3

Bước 4: Đánh giá mô hình máy học

Hình 8 Khởi chạy bước 4

Bước 5: Xuất kết quả


Hình 9 Khởi chạy bước 5

Bước 6: Xem kết quả và đánh giá độ chính xác của model máy học

Hình 10 Xem kết quả và đánh giá độ chính xác của model máy học
Kết luận
- Kết thúc khóa học hiểu được quy trình khai phá tri thức trong lĩnh vực AI nói chung và
Machine Learning và Deep Learning nói riêng
- Biết cách áp dụng toán học vào AI để khai phá tri thức từ bộ dữ liệu.
- Biết cách tổ chức dữ liệu trong quá trình khai phá tri thức
- Biết áp dụng công cụ toán học để huấn luyện cho máy học
- Có thể áp dụng được các thư viện hỗ trợ mạnh mẽ về toán học trong ngôn ngữ lập trình
Python 3

Hướng phát triển trong tương lai


- Xây dựng thêm giao diện cho người dùng tương tác
- Điều chỉnh được các tham số truyền vào
- Giảm sai số của mô hình
Tài liệu kham khảo
1. Mã nguồn source code:
https://drive.google.com/drive/folders/1N_8N_0Evv84rFi6GOBD0DDOSDL
slBJDf?usp=sharing

2. Mã nguồn bộ dữ liệu giả lập : https://drive.google.com/file/d/1WQ1U1o-


BloVbKrKAwd1W6FScww6j4hek/view?usp=sharing

3. Thực thi sản phẩm tại Google Colab :


https://colab.research.google.com/drive/1h-
96ocsY1AYT6B4ynhqMba79ULPen9qS?authuser=3

You might also like