100% found this document useful (1 vote)
779 views27 pages

Báo cáo học máy

Báo cáo nghiên cứu ứng dụng thuật toán K-NN vào bài toán phân loại hoa Diên Vĩ. Báo cáo giới thiệu cơ sở lý thuyết về học máy, thuật toán K-NN và bài toán. Sau đó mô tả quá trình cài đặt và đánh giá kết quả trên bộ dữ liệu Iris.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
779 views27 pages

Báo cáo học máy

Báo cáo nghiên cứu ứng dụng thuật toán K-NN vào bài toán phân loại hoa Diên Vĩ. Báo cáo giới thiệu cơ sở lý thuyết về học máy, thuật toán K-NN và bài toán. Sau đó mô tả quá trình cài đặt và đánh giá kết quả trên bộ dữ liệu Iris.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN

NHẬP MÔN HỌC MÁY

ĐỀ TÀI:
ỨNG DỤNG THUẬT TOÁN K-NN VÀO BÀI TOÁN
PHÂN LOẠI HOA DIÊN VĨ

Sinh viên thực hiện : NGUYỄN KHẮC ĐỒNG


: NGUYỄN TRUNG KIÊN
: PHÙNG CÔNG HUY
Giảng viên hướng dẫn : PHẠM ĐỨC HỒNG

Khoa : CÔNG NGHỆ THÔNG TIN

Chuyên ngành : QUẢN TRỊ VÀ AN NINH MẠNG

Lớp : D12QTANM

Khóa : 2017-2022

Hà Nội, ngày 10 tháng 10 năm 2020


PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:

Họ và tên Chữ ký Ghi chú

NGUYỄN KHẮC ĐỒNG


MSV: 1781320004

NGUYỄN TRUNG KIÊN


MSV: 1781320015

PHÙNG CÔNG HUY


MSV: 1781320009

Giảng viên chấm:

Họ và tên Chữ ký Ghi chú

Giảng viên chấm 1 :

Giảng viên chấm 2 :

MỤC LỤC
MỞ ĐẦU.............................................................................................................................1
1. Mục đích nghiên cứu...................................................................................................2
2. Phạm vi và đối tượng nghiên cứu...............................................................................2
3. Nội dung thực hiện......................................................................................................2
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT...................................................................................3
1.1. Tổng quan về học máy.............................................................................................3
1.1.1. Giới thiệu...........................................................................................................3
1.1.2. Phân nhóm các loại học máy.............................................................................3
1.2. Ứng dụng của học máy............................................................................................7
1.3. Thuật toán K-nearest neighbor (K-NN)...................................................................8
1.3.1. Giới thiệu thuật toán..........................................................................................8
1.3.2. Ý tưởng thuật toán.............................................................................................9
1.3.3. Các bước thực hiện thuật toán...........................................................................9
1.3.4. Ưu nhược điểm của thuật toán..........................................................................9
CHƯƠNG 2: BÀI TOÁN PHÂN LOẠI HOA DIÊN VĨ (IRIS)......................................11
2.1. Giới thiệu bài toán..................................................................................................11
2.1.1. Giới thiệu về hoa Diên Vĩ (Iris)......................................................................11
2.1.2. Định nghĩa bài toán.........................................................................................12
2.2. Thuật toán K-NN cho bài toán phân loại hoa diên vĩ............................................12
2.3. Thiết kế bài toán.....................................................................................................16
CHƯƠNG 3: CÀI ĐẶT VÀ ĐÁNH GIÁ.........................................................................18
3.1. Cài đặt trên python.................................................................................................18
3.2. Kết quả...................................................................................................................21
CHƯƠNG 4: KẾT LUẬN................................................................................................22
TÀI LIỆU THAM KHẢO.................................................................................................23
DANH MỤC HÌNH ẢNH
Hình 1. 1. Mô hình học có giám sát....................................................................................4

Hình 1. 2. Mô hình học không giám sát..............................................................................5

Hình 1. 3. Sự khác biệt giữa 2 mô hình SL và UL..............................................................6

YHình 2. 1. Bài toán phân loại hoa Iris……………………………………………………


11

YHình 3. 1. Kết quả của chương


trình…………………………………………………….19

DANH MỤC BẢNG BIỂU


YBảng 2. 1. Bảng dữ liệu đầu vào....................................................................................12

Bảng 2. 2. Bảng dữ liệu sau khi được xử lý......................................................................12

Bảng 2. 3. Bảng dữ liểu tính khoảng cách của các nút.....................................................13


MỞ ĐẦU
Nhưng năm gần đây, AI nổi lên như một bằng chứng của cuộc cách mang công
nghiệp lần thứ tư. Trí tuệ nhân tao có thể đươc định nghĩa như một nghành của 7 khoa
học máy tính liên quan đến việc tự động hóa các hành vi thông minh. Trí tuệ nhân tao là
một bộ phận của khoa học máy tính và do đó nó phải đươc đặt trên nhưng nguyên lý lý
thuyết vưng chắc, có khả năng ứng dụng đươc của lĩnh vực này. Ở thời điểm hiện tai,
thuật ngư này thường dùng để nói đến các máy tính có mục đích không nhất định và
ngành khoa học nghiên cứu về các lý thuyết và các ứng dụng của trí tuệ nhân tao.
Theo đà phát triển của công nghệ, ứng dụng trí tuệ nhân tao luôn là xu hướng công
nghệ tương lai mà các hang công nghệ trên toàn thế giới đua nhau sáng tao, nó là nền
tảng cốt lõi của cuốc cách mang công nghệ 4.0.
ML (Machine Learning) là một lĩnh vực của trí tuệ nhân tao, đươc sinh ra từ khả
năng nhận diện mẫu và từ lý thuyết các máy tính có thể học mà không cần phải lập trình
để xử lý các nhiệm vụ cụ thể nào đó.
Hầu hết mọi nghành công nghiệp đang làm việc với hàm lương lớn dư liệu đều
nhận ra tầm quan trọng của công nghệ ML. Nhưng cái nhìn sáng suốt từ nguồn dư liệu
này – chủ yếu dang thời gian thực – sẽ giúp các tổ chức vận hành hiệu quả hơn hoặc tao
lơi thế canh tranh so với các đối thủ.
Các ứng dụng của ML đa quá quen thuộc với con người: xe tự hành của Google và
Tesla, hệ thống tự tag khuôn mặt trên Facebook, hệ thống gơi ý sản phẩm của Amazon,
hệ thống gơi ý phim của Netflix…, chỉ là một vài trong vô vàn nhưng ứng dụng của trí
tuệ nhân tao và cụ thể là ML.
Xu hướng phát triển công nghệ thông tin ngày càng tăng, song song với nó lương
dư liệu đươc sinh ra cũng ngày một lớn. Vì vậy nhu cầu để xử lý dư liệu cũng lớn hơn,
ML đang góp phần giải quyết vấn đề này. Một trong nhưng thuật toán thường dùng trong
ML đó là thuật toán K- nearest neighbor.
Ứng dụng của thuật toán này đươc sử dụng rất nhiều và rộng rai trong các bài toán
phân lớp.
1. Mục đích nghiên cứu
- Nghiên cứu, tìm hiểu thuật toán KNN.
- Đánh giá hiệu quả của thuật toán.
2. Phạm vi và đối tượng nghiên cứu
- Pham vi nghiên cứu: Thử nghiệm trên Iris flower dataset.
- Đối tương nghiên cứu: Thuật toán KNN và bộ Iris flower dataset.
3. Nội dung thực hiện
- Tìm hiểu thuật toán KNN.
- Làm quen với bộ dư liệu Iris.
- Sử dụng bộ dư liệu vào thử nghiệm và đánh giá.
5. Cấu trúc đồ án
Mở đầu
Chương 1: Cơ sở lý thuyết
Chương 2: Bài toán phân loại hoa Diên Vĩ
Chương 3: Cài đặt và đánh giá
Chương 4: Kết luận
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về học máy
1.1.1. Giới thiệu
Học máy (Machine learning) là một lĩnh vực con của Trí tuệ nhân tạo(Artificial
Intelligence) sử dụng các thuật toán cho phép máy tính có thể học từ dữ liệu để thực hiện
các công việc thay vì được lập trình một cách rõ ràng, cung cấp cho hệ thống khả năng tự
động học hỏi và cải thiện hiệu suất, độ chính xác dựa trên những kinh nghiệm từ dữ liệu
đầu vào. Học máy tập trung vào việc phát triển các phần mềm, chương trình máy tính có
thể truy cập vào dữ liệu và tận dụng nguồn dữ liệu đó để tự học.
Học máy vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu cơ sở
và lựa chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời, trước khi sử dụng, dữ
liệu phải sạch, không có sai lệch và không có dữ liệu giả.
Các mô hình học máy yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh giá
mô hình. Trước đây, các thuật toán học máy thiếu quyền truy cập vào một lượng lớn dữ
liệu cần thiết để mô hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng trưởng trong dữ
liệu lớn (big data) đã cung cấp các thuật toán học máy với đủ dữ liệu để cải thiện độ
chính xác của mô hình và dự đoán.
1.1.2. Phân nhóm các loại học máy
[Link]. Học có giám sát (Supervised Learning)
Là phương pháp sử dụng những dữ liệu đã được gán nhãn từ trước để suy luận ra
quan hệ giữa đầu vào và đầu ra. Các dữ liệu này được gọi là dữ liệu huấn luyện và chúng
là cặp các đầu vào-đầu ra.
Học có giám sát sẽ xem xét các tập huấn luyện này để từ đó có thể đưa ra dự đoán
đầu ra cho 1 đầu vào mới chưa gặp bao giờ. Mỗi bộ dữ liệu có cấu trúc theo cặp {x, y}
với x được xem là dữ liệu thô (raw data) và y là nhãn của dữ liệu đó. Nhiệm vụ của SL là
dự đoán đầu ra mong muốn dựa vào giá trị đầu vào. Dễ nhận ra, học có GIÁM SÁT tức
là máy học dựa vào sự trợ giúp của con người, hay nói cách khác con người dạy cho máy
học và giá trị đầu ra mong muốn được định trước bởi con người. Tập dữ liệu huấn luyện
hoàn toàn được gán nhãn dựa vào con người. Tập càng nhỏ thì máy tính học càng ít. SL
cũng được áp dụng cho 2 nhóm bài toán chính là bài toán dự đoán (regression) và bài
toán phân lớp (classification), dự đoán giá nhà, phân loại email dựa trên tập dữ liệu mẫu -
tập huấn luyện (training data).
Hình 1. . Mô hình học có giám sát
Học có giám sát là một hướng tiếp cận của Máy học để làm cho máy tính có khả
năng "học". Trong hướng tiếp cận này, người ta "huấn luyện" máy tính dựa trên những
quan sát có dán nhãn. Ta có thể hình dung những quan sát này như là những câu hỏi, và
nhãn của chúng là những câu trả lời.
Ý tưởng của học có giám sát là: bằng việc ghi nhớ và tổng quát hóa một số quy tắc
từ một tập câu hỏi có đáp án trước, máy tính sẽ có thể trả lời được những câu hỏi dù chưa
từng gặp phải, nhưng có mối liên quan.
Ví dụ ta dạy máy tính "1 + 1 = 2" và hy vọng nó sẽ học được phép tính cộng x + 1
và trả lời được là "2 + 1 = 3". Học có giám sát mô phỏng việc con người học bằng cách
đưa ra dự đoán của mình cho một câu hỏi, sau đó đối chiếu với đáp án. Sau đó con người
rút ra phương pháp để trả lời đúng không chỉ câu hỏi đó, mà cho những câu hỏi có dạng
tương tự.
Trong học có giám sát, các quan sát bắt buộc phải được dán nhãn trước. Đây chính
là một trong những nhược điểm của phương pháp này, bởi vì không phải lúc nào việc
dán nhãn chính xác cho quan sát cũng dễ dàng. Ví dụ như trong dịch thuật, từ một câu
của ngôn ngữ gốc có thể dịch thành rất nhiều phiên bản khác nhau trong ngôn ngữ cần
dịch sang. Tuy nhiên, việc quan sát được dán nhãn cũng lại chính là ưu điểm của học có
giám sát bởi vì một khi đã thu thập được một bộ dữ liệu lớn được dán nhãn chuẩn xác,
thì việc huấn luyện trở nên dễ dàng hơn rất nhiều so với khi dữ liệu không được dán
nhãn.
[Link]. Học phi giám sát (Unsupervised Learning)
Unsupervised Learning là một nhóm thuật toán hay phương pháp kỹ thuật cho
phép máy tự học hỏi và tìm ra một mô hình hay cấu trúc nào đó ẩn trong một bộ dữ liệu
không được gắn nhãn trước. Điều này đồng nghĩa với việc chúng ta chỉ có bộ dữ liệu đầu
vào và hoàn toàn không biết comeout là gì.
Ứng dụng phổ biến nhất của học không giám sát là gom cụm (cluster)

Hình 1. . Mô hình học không giám sát


Trong thuật toán này, chúng ta không biết được dữ liệu đầu ra hay nhãn mà chỉ có dữ
liệu đầu vào. Thuật toán Học không giám sát dựa vào cấu trúc của dữ liệu để thực hiện
một công việc nào đó, ví dụ như phân nhóm hoặc giảm số chiều của dữ liệu để thuận tiện
trong việc lưu trữ và tính toán.
Một cách toán học, Học không giám sát là khi chúng ta chỉ có dữ liệu vào X mà không
biết nhãn Y tương ứng.
Sự khác nhau giữa học có giám sát và học không giám sát:
Hình 1. . Sự khác biệt giữa 2 mô hình SL và UL
Học có giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học có đầu vào
và đầu ra tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm thiểu sai số
lỗi (loss) của các dự đoán tại các vòng lặp huấn luyện. Sau quá trình huấn luyện. mô hình
sẽ có khả năng đưa ra dự đoán về đầu ra với một đầu vào mới gặp (không có trong dữ
liệu học). Nếu không gian đầu ra được biểu diễn dứới dạng rời rạc, ta gọi đó là bài toán
phân loại (classification). Nếu không gian đầu ra được biểu diễn dưới dạng liên tục, ta
gọi đó là bài toán hồi quy (regression).
Học không giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học chỉ bao
gồm đầu vào mà không có đầu ra. Mô hình sẽ được huấn luyện cách để tìm cấu trúc hoặc
mối quan hệ giữa các đầu vào. Một trong những phương pháp học không giám sát quan
trọng nhất là phân cụm (clustering): Tạo các cụm khác nhau với mỗi cụm biểu diễn một
đặc trưng nào đó của dữ liệu và phân các đầu vào mới vào các cụm theo các đặc trưng
của đầu vào đó. Các phương pháp học không giám sát khác có thể kể đến như: phát hiện
điểm bất thường (anomaly detection), Singular-value decomposition, …
Giả sử bạn cần nhận ra xe nào là xe hơi và xe nào là xe máy.
Trong học có giám sát trường hợp học tập, tập dữ liệu đầu vào (đào tạo) của bạn
cần được dán nhãn, nghĩa là, đối với mỗi yếu tố đầu vào trong tập dữ liệu đầu vào (đào
tạo) của bạn, bạn nên chỉ định nếu nó đại diện cho ô tô hoặc xe máy .
Trong học không giám sát trường hợp học tập, bạn không gắn nhãn đầu vào. Mô
hình không giám sát sẽ phân cụm đầu vào thành các cụm dựa trên, ví dụ: trên các tính
năng/tính chất tương tự. Vì vậy, trong trường hợp này, không có nhãn như "xe hơi".
1.2. Ứng dụng của học máy
Nhiều hoạt động hàng ngày của chúng ta được trợ giúp bởi các thuật toán machine
learning, bao gồm:
Phát hiện gian lận.
Các kết quả tìm kiếm trên web.
Quảng cáo theo thời gian thực trên các trang web và các thiết bị di động.
Điểm số tín dụng và lời mời chào tiếp theo tốt nhất.
Dự đoán những hư hỏng của thiết bị.
Những mô hình định giá mới.
Phát hiện xâm nhập mạng.
Nhận dạng qua pattern (mẫu) và hình ảnh.
Lọc bỏ các email spam.
Trong công nghệ thông tin, cụ thể là lĩnh vực Machine Learning (Học Máy), học
không giám sát thường được ứng dụng để chia hay phân loại nhóm và kết hợp, trong đó:
Phân nhóm: hay chia nhóm là khi máy phân tích, tìm hiểu và khám phá các nhóm
vốn có bên trong bộ dữ liệu, từ đó giúp bạn phân nhóm các khách hàng của mình theo
hành vi mua hàng hay phân loại các bài viết, hình ảnh có cùng nội dung chẳng hạn.
Kết hợp: được vận dụng khi máy khám phá các quy tắc mô tả dữ liệu, ví dụ như
người mua món hàng này sẽ có xu hướng mua một món hàng tương ứng nào đó có liên
quan.
Marketing và sales
Dựa trên hành vi mua hàng trước đây, các trang web sử dụng Machine Learning
phân tích lịch sử mua hàng, từ đó giới thiệu những vật dụng mà bạn có thể sẽ quan tâm
và yêu thích. Khả năng tiếp nhận dữ liệu, phân tích và sử dụng những dữ liệu đó để cá
nhân hóa trải nghiệm mua sắm (hoặc thực hiện chiến dịch Marketing) chính là tương tai
của ngành bán lẻ.
Ứng dụng trong các mạng xã hội
Học máy đang được sử dụng trong một loạt các ứng dụng ngày nay. Một trong
những ví dụ nổi tiếng nhất là Facebook News Feed. Nguồn cấp tin tức sử dụng học máy
để cá nhân hóa từng nguồn cấp dữ liệu thành viên. Nếu một thành viên thường xuyên
dừng lại để đọc hoặc thích một bài đăng của một người bạn cụ thể, News Feed sẽ bắt đầu
hiển thị nhiều hơn về hoạt động của người bạn đó trước đó trong nguồn cấp dữ liệu.
Đằng sau hệ thống ấy, phần mềm sử dụng phân tích thống kê và phân tích dự đoán để
xác định các mẫu trong dữ liệu người dùng và sử dụng các mẫu đó để điền vào News
Feed. Nếu thành viên không còn dừng lại để đọc, thích hoặc bình luận trên các bài đăng
của bạn bè, dữ liệu mới đó sẽ được bao gồm trong tập dữ liệu và News Feed sẽ điều
chỉnh tương ứng. Không chỉ riêng facebook, ta có thể bắt gặp những tính năng tương tự
đó qua các mạng xã hội khác như google, instagram,....
Nhận diện hình ảnh
Nhận dạng hình ảnh là một trong những ví dụ về máy học và trí tuệ nhân tạo phổ
biến nhất. Về cơ bản, nó là một cách tiếp cận để xác định và phát hiện các đặc trưng của
một đối tượng trong hình ảnh kỹ thuật số. Hơn nữa, kỹ thuật này có thể được sử dụng để
phân tích sâu hơn, chẳng hạn như nhận dạng mẫu, nhận diện hình khuôn, nhận dạng
khuôn mặt, nhận dạng ký tự quang học và nhiều hơn nữa,...
Xử lý ngôn ngữ tự nhiên (NLP):
Nếu bạn nghĩ Google Translate tự bản thân nó đã thực sự là một cuốn từ điển hoàn
hảo thì bạn nên suy nghĩ lại. Nó thực ra được tạo nên từ một bộ các thuật toán Học máy
dựa trên việc cập nhật theo thời gian các đầu vào từ phía người dùng, như từ mới và cú
pháp mới. Siri, Alexa, Cortana, và gần đây nhất là Google Assistant, tất cả đều dựa trên
việc Xử lý ngôn ngữ tự nhiên để Nhận dạng giọng nói, Tổng hợp giọng nói (dựa trên một
phần), cho phép chúng hiểu hay phát âm ra những từ chưa từng gặp phải trước đó

1.3. Thuật toán K-nearest neighbor (K-NN)


1.3.1. Giới thiệu thuật toán
Thuật toán KNN là một trong những phương pháp học có giám sát “Supervised
Learning” tức dựa trên biến mục tiêu đã được xác định trước đó, thuật toán sẽ xem xét dữ
liệu đã chứa biến mục tiêu (đã phân loại) để “học” và tìm ra những biến d có thể tác động
đến biến mục tiêu.
KNN dựa trên giả định là những thứ tương tự hay có tính chất gần giống nhau sẽ
nằm ở vị trí gần nhau, với giả định như vậy, KNN được xây dựng trên các công thức toán
học phục vụ để tính khoảng cách giữa 2 điểm dữ liệu (gọi là Data points) để xem xét
mức độ giống nhau của chúng.
1.3.2. Ý tưởng thuật toán
Thuật toán K-NN cho rằng những dữ liệu tương tự nhau sẽ tồn tại gần nhau trong
một không gian. Từ đó, một đối tượng được phân lớp dựa vào K láng giềng của nó. K là
số nguyên dương được xác định trước khi thực hiện thuật toán. Người ta thường dùng
khoảng cách Euclidean để tính khoảng cách giữa các đối tượng. Việc tìm khoảng cách
giữa 2 điểm củng có nhiều công thức có thể sử dụng, tùy trường hợp mà chúng ta lựa
chọn cho phù hợp. Đây là 3 cách cơ bản để tính khoảng cách 2 điểm dữ liệu x, y có k
thuộc tính:
k
D= √∑ (
i=1
x i− y i ) 2

k
D=∑ ¿ x i− y i∨¿ ¿
i=1

D=¿¿

1.3.3. Các bước thực hiện thuật toán


Bước 1: Xác định tham số K= số láng giềng gần nhất.
Bước 2: Tính khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong
training data.
Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gần
nhất với đối tương cần phân lớp.
Bước 4: Lấy tất cả các lớp của K láng giềng gần nhất.
Bước 5: Dựa vào phần lớn lớp của K để xác định lớp cho đối tương cần phân lớp
1.3.4. Ưu nhược điểm của thuật toán
[Link]. Ưu điểm
Thuật toán đơn giản, dễ dàng triển khai.
Độ phức tạp tính toán nhỏ.
Xử lý tốt với tập dữ liệu nhiễu
[Link]. Nhược điểm
Với K nhỏ dễ gặp nhiễu dẫn tới kết quả đưa ra không chính xác
Cần nhiều thời gian để thực hiện do phải tính toán khoảng cách với tất cả các đối
tượng trong tập dữ liệu.
Cần chuyển đổi kiểu dữ liệu thành các yếu tố định tính.
CHƯƠNG 2: BÀI TOÁN PHÂN LOẠI HOA DIÊN VĨ (IRIS)
2.1. Giới thiệu bài toán
2.1.1. Giới thiệu về hoa Diên Vĩ (Iris)
Hoa Diên Vĩ còn có tên gọi khác là hoa Iris. Tiếng Hy Lạp, "Iris" có nghĩa là Cầu
Vồng.
Trong thần thoại Hy Lạp, Iris là tín sứ của thần Zeus và nàng thường xuất hiện
dưới hình một chiếc cầu vồng. Nàng là người đưa tin trên đỉnh Olympus, Iris mang thông
điệp của các vị thần linh từ "con mắt Thiên Đường" xuống cho nhân loại trên trái đất qua
vòng cung cầu vồng rực rỡ. Từ Iris cũng có nghĩa là "con mắt Thiên Đường" (The eye of
Heaven). Iris, như ta đã biết, là tên của một nữ thần Hy Lạp, một loài hoa, và nó còn có
nghĩa là tròng đen trong con mắt chúng ta. Điều này ngụ ý rằng mỗi chúng ta đều mang
trong mình một mảnh của Thiên Đường. Những người đàn ông Hy Lạp thường trồng hoa
Diên Vĩ tím trên mộ những người phụ nữ mà họ yêu thương để tỏ lòng tôn kính nữ thần
Iris, người mang sứ mệnh dẫn dắt những linh hồn phụ nữ này đến chốn Thiên Đàng (the
Elysian fields).
Hoa Diên Vĩ đã là biểu tượng của hoàng gia và sự che chở thần thánh suốt hàng
thế kỷ trên khắp thế giới. Loài hoa đầy sức thu hút này được rất nhiều người ngưỡng mộ.
Các vị vua chúa nước Pháp đã dùng nó làm biểu tượng hoàng gia, gọi nó là Fleur- de-lis.
"Fleur-de-lis" có nguồn gốc từ tên "Fleur-de-Louis", sau thời vua Louis VII, năm 1147.
Theo thời gian, tên đó chuyển thành "Fleur-de-luce", có nghĩa là hoa của ánh sáng
(flower of light), cuối cùng đến ngày nay, nó được gọi là "Fleur-de-Lys", hay Flower of
the Lily (Lily : Hoa Huệ Tây, Loa Kèn, Bách Hợp). Fleur-de-Lis đã là biểu tượng của
nước Pháp từ thế kỷ 13. Hoàng gia Pháp trang trí hoa Diên Vĩ trên áo choàng, các đồ vật
trong cung điện và trên những bức tường như biểu hiện của sự toàn bích, ánh sáng và
cuộc sống. Có nhiều truyền thuyết khác nhau giải thích tại sao hoa Diên Vĩ được chế độ
quân chủ Pháp chọn làm biểu tượng . Tương truyền rằng, Clovis, vua nước Pháp triều đại
Mêrôvê khi đối mặt với đội quân thiện chiến của Alamanni (Đức) đến xâm chiếm vương
quốc mình, ông đã nói với hoàng hậu Clotida rằng ông sẽ theo đạo và chịu rửa tội nếu
như Chúa phù hộ ông đánh thắng trận đấu này (trước đó hoàng hậu đã nhiều lần khuyên
chồng mình vào đạo nhưng ông vẫn không nghe). Cuối cùng, ông thắng thật và nhận
fleur-de-lis làm biểu tượng. Tiếp đó, vào thế kỷ 12, vua Louis trở thành hoàng đế nước
Pháp đầu tiên khắc họa hoa Diên Vĩ trên chiếc khiên của mình. Nữ anh hùng nước Pháp,
Joan of Arc (Jeanne d'Arc) đã mang theo lá cờ trắng có biểu tượng Chúa hộ mệnh của
hoàng gia (hoa Diên Vĩ ) khi bà đánh bại quân Anh tại Orléans (1429).
Ở Nhật, hoa Diên Vĩ tượng trung cho chí khí anh hùng và dòng dõi quý phái. Hoa
Diên Vĩ là một phần quan trọng trong lễ hội mùa xuân dành cho các bé trai.
Diên Vĩ là loài cây lưu niên có thân thảo vươn cao, lá hình lưỡi kiếm và những đóa
hoa to nhiều màu sắc với ba cánh và ba đài hoa rũ xuống. Có hơn 300 loài hoa Diên Vĩ
xinh đẹp khác nhau với các màu xanh da trời nhạt, tím, vàng, trắng, hồng, cam, nâu
đỏ...đa dạng như màu sắc cầu vồng. Hoa Diên Vĩ được xem như sứ giả mang đến những
điềm lành. niềm hy vọng. Ba cánh hoa Diên Vĩ đại diện cho lòng Trung Thành, sự Khôn
Ngoan và lòng Dũng Cảm. Hoa Diên Vĩ vàng là biểu tượng của ngọn lửa và niềm đam
mê. Hoa Diên Vĩ đã từng được thấy ở sa mạc, đầm lầy hay cả miền Bắc cực Siberia lạnh
giá, nhiều nhất vẫn là ở các vùng khí hậu ôn hòa

2.1.2. Định nghĩa bài toán


Với số lượng loài hoa lớn khiến cho việc phân loại, nhận biết giữa các loài hoa Iris
trở nên khó khăn. Từ đó đặt ra bài toán phân loại, nhận biết một loại hoa mới thuộc loài
hoa iris nào trong dữ liệu những loại Iris đã có trước đó.
Với một bộ dữ liệu đồ sộ về hoa Iris đã có về các cá thể hoa thuộc các loài Iris cụ
thể, ta không cần phải phân tích về gen hay các phân tích về sinh học phức tạp để nhận
biết ra 1 cá thể hoa đang xét thuộc loài Iris nào, bằng các dữ liệu đã có sẵn và dựa vào
các thuộc tính của cá thể, ta có thể đưa ra nhận biết nhanh chóng cá thể đó thuộc loài hoa
Iris nào bằng các tính toán số học trên máy tính (Machine Learning)
2.2. Thuật toán K-NN cho bài toán phân loại hoa diên vĩ
“Sự gần gũi” được xác định bằng khoảng cách Euclide, với khoảng cách Euclide
giữa hai điểm
X=(x1, x2, x3,…xn) và Y =(y1,y2, y3,…yn) là :

n
D( X , Y )= √ ∑ ( x i− y i )2
i=1

Sự phân loại lớp cho mẫu chưa biết lúc này dựa trên sự chiếm đa số của một lớp
nào đó trong “k – người hàng xóm gần nhất” đã tìm được ở đây ta cần biến đổi dữ liệu để
cho hiệu quả của thuật toán được nâng cao hơn.cần lưu ý rằng:
Khoảng cách Euclide bị ảnh hưởng bởi khoảng giới hạn giá trị thuộc tính
Khoảng giá trị lớn thì gây ra nhiều ảnh hưởng hơn so với khoảng giá trị nhỏ
Do vậy khoảng cách giữa các mẫu có thể bị chi phối bởi một số thuộc tính có giá
trị tương đối lớn so với thuộc tính khác.
Vì vậy ta có thể khắc phục bằng cách bình thường hóa một số thuộc tính bằng cách
chia giá trị của mỗi thuộc tính thuộc mỗi mẫu cho giá trị lớn nhất của thuộc tính đó trong
tất cả các mẫu, làm các giá trị sau khi bình thường hóa nằm trong khoảng [0,1]
Áp dụng vào bài toán phân lớp hoa Iris:

Hình 2. . Bài toán phân loại hoa Iris


Trích dẫn từ bộ dữ liệu hoa Iris, ta lập ra 1 bảng dữ liệu nhỏ và tiến hành
thực hiện theo thuật toán K-NN để minh họa:
Chiều dài Chiều rộng Chiều dài Chiều rộng Tên loài
đài hoa đài hoa cánh hoa cánh hoa
5.1 3.5 1.4 0.2 Iris-setosa
4.7 3.2 1.3 0.2 Iris-setosa
7.0 3.2 4.7 1.4 Iris-versicolor
6.3 3.3 6.0 2.5 Iris-virginica
5.9 3.0 4.2 1.5 Iris-versicolor
5.1 3.8 1.6 0.2 ???
Bảng 2. . Bảng dữ liệu đầu vào
Ta tiến hành thường hóa dữ liệu, bảng dữ liệu sẽ bị biến đổi thành bảng sau:
Chiều dài Chiều rộng Chiều dài Chiều rộng Tên loài
đài hoa đài hoa cánh hoa cánh hoa

5.1/7.0 = 0.73 3.5/3.8 = 0.92 1.4/6.0 = 0.23 0.2/2.5 = 0.08 Iris-setosa

4.7/7.0 = 0.67 3.2/3.8 = 0.84 1.3/6.0 = 0.22 0.2/2.5 = 0.08 Iris-setosa

7.0/7.0 = 1 3.2/3.8 = 0.84 4.7/6.0 = 0.78 1.4/2.5 = 0.56 Iris-versicolor

6.3/7.0 = 0.9 3.3/3.8 = 0.87 6.0/6.0 = 1 2.5/2.5 = 1 Iris-virginica

5.9/7.0 = 0.84 3.0/3.8 = 0.79 4.2/6.0 = 0.7 1.5/2.5 = 0.6 Iris-versicolor

5.1/7.0 = 0.73 3.8/3.8 = 1 1.6/6.0 = 0.27 0.2/2.5 = 0.08 ???

Bảng 2. . Bảng dữ liệu sau khi được xử lý


Ta tính toán khoảng cách Euclide được bảng khoảng cách tương ứng :
Tên loài Khoảng cách
Iris-setosa (0.73-0.73)2+(0.92-1)2+(0.23-0.27)2+(0.08- 0.08)2 = 0.008

Iris-setosa (0.67-0.73)2+(0.84-1)2+(0.22-0.27)2+(0.08- 0.08)2 = 0.178

Iris-versicolor (1-0.73)2+(0.84-1)2+(0.78-0.27)2+(0.56- 0.08)2 = 0.767

Iris-virginica (0.9-0.73)2+(0.87-1)2+(1-0.27)2+(1-0.08)2 = 1.194

Iris-versicolor (0.84-0.73)2+(0.79-1)2+(0.7-0.27)2+(0.6- 0.08)2= 0.715

Bảng 2. . Bảng dữ liểu tính khoảng cách của các nút


Chọn K = 3
Ta chọn K hàng xóm gần nhất là 3 thì 3 khoảng cách nhỏ nhất lần lượt là :
0.008, 0.178, 0.715 tương ứng với tên loài: Iris-setosa, Iris-setosa và Iris-versicolor
Trong 3 hàng xóm gần nhất này có 2 hàng xóm là Iris-setosa và 1 hàng xóm
là Iris-versicolor.vậy ta kết luận loài cần phân lớp thuộc loài Iris-setosa
Chọn K = 4
Trong trường hợp ta chọn K hàng xóm gần nhất là 4 thì trong 4 hàng xóm
đấy có 2 hàng xóm là Iris-setosa và 2 hàng xóm là Iris-versicolor
Do số hàng xóm ở đây là bằng nhau (đều bằng 2).ta tiến hành thêm 1 bước
nữa là đi tính trung bình khoảng cách của mỗi hàng xóm rồi so sánh các khoảng
cách trung bình đó với nhau rồi chọn ra khoảng cách nhỏ nhất và lấy loài hoa đại
diện cho khoảng cách được chọn gán nhãn cho cá thể đang xét.
Như ví dụ trên ta đi tính khoảng cách trung bình nên ta có bảng:
Tên loài Khoảng cách trung bình
Iris-setosa (0.008+0.178) / 2 = 0.093
Iris-versicolor (0.767+0.715) / 2 = 0.741
Ta chọn khoảng cách trung bình nhỏ nhất là 0.093 tương ứng với loài hoa:
Iris- [Link] kết luận cá thể hoa đang xét thuộc loài Iris-setosa
2.3. Thiết kế bài toán
Đầu tiên, ta xây dựng hàm tính khoảng cách giữa hai điểm trong không gian:
def calcDistancs(pointA, pointB, numOfFeature=4):
tmp = 0
for i in range(numOfFeature):
tmp += (float(pointA[i]) - float(pointB[i])) ** 2
return [Link](tmp)
Hàm này duyệt qua tất cả các thuộc tính tương ứng mỗi điểm, tính tổng của
hiệu bình phương mỗi thuộc tính, cuối cùng là trả về căn bậc 2 của tổng đó.
Tiếp theo là hàm tìm k điểm gần nhất
def kNearestNeighbor(trainSet, point, k):
distances = []
for item in trainSet:
[Link]({
"label": item[-1],
"value": calcDistancs(item, point)
})
[Link](key=lambda x: x["value"])
labels = [item["label"] for item in distances]
return labels[:k]
Hàm này sẽ duyệt qua tất cả các giá trị trong trainSet, tính khoảng cách giữa
điểm truyền vào với những điểm trong tập dữ liệu ban đầu. Kết quả của vòng lặp
này là một list các dictionary gồm tên nhãn (tên loài hoa) và khoản cách đến điểm
đó. Tiếp theo chúng ta sẽ sắp xếp tăng dần list này với giá trị so sánh là khoảng
cách. Vì kết quả chúng ta chỉ cần biết tên k loài hoa nên chúng ta sẽ thêm 1 vòng
lặp để tạo một list các nhãn có cùng thứ tự. Cuối cùng là trả về k điểm dữ liệu đầu
tiên của list (nhỏ nhất)
Và hàm cuối cùng là tìm loài hoa xuất hiện nhiều nhất trong k loài tìm được
def findMostOccur(arr):
labels = set(arr)
ans = ""
maxOccur = 0
for label in labels:
num = [Link](label)
if num > maxOccur:
maxOccur = num
ans = label
return ans
Chúng ta có list labels là tập hợp các nhãn, sau  đó duyệt qua các nhãn đó để
tìm nhãn xuất hiện nhiều nhất.
CHƯƠNG 3: CÀI ĐẶT VÀ ĐÁNH GIÁ
3.1. Cài đặt trên python
import csv
import numpy as np
import math
def loadData(path):
f = open(path, "r")
data = [Link](f)
data = [Link](list(data))
data = [Link](data, 0, 0)
data = [Link](data, 0, 1)
[Link](data)
[Link]()
trainSet = data[:100]
testSet = data[100:]
return trainSet, testSet
def calcDistancs(pointA, pointB, numOfFeature=4):
tmp = 0
for i in range(numOfFeature):
tmp += (float(pointA[i]) - float(pointB[i])) ** 2
return [Link](tmp)
def kNearestNeighbor(trainSet, point, k):
distances = []
for item in trainSet:
[Link]({
"label": item[-1],
"value": calcDistancs(item, point)
})
[Link](key=lambda x: x["value"])
labels = [item["label"] for item in distances]
return labels[:k]
def findMostOccur(arr):
labels = set(arr)
ans = ""
maxOccur = 0
for label in labels:
num = [Link](label)
if num > maxOccur:
maxOccur = num
ans = label
return ans
if __name__ == "__main__":
trainSet, testSet = loadData("./[Link]")
numOfRightAnwser = 0
for item in testSet:
knn = kNearestNeighbor(trainSet, item, 5)
answer = findMostOccur(knn)
numOfRightAnwser += item[-1] == answer
print("label: {} -> predicted: {}".format(item[-1], answer))
print("Accuracy", numOfRightAnwser/len(testSet))
print("Input your infor:")
SepalLengthCm = input("Sepal Length(Cm): ")
SepalWidthCm = input("Sepal Width(Cm): ")
PetalLengthCm= input("Petal Length(Cm): ")
PetalWidthCm = input("Petal Width(Cm): ")
NewData = []
[Link](float(SepalLengthCm))
[Link](float(SepalWidthCm))
[Link](float(PetalLengthCm))
[Link](float(PetalWidthCm))
print(NewData)
Newknn = kNearestNeighbor(trainSet, NewData, 5)
Newanswer = findMostOccur(knn)
print("label: {} -> predicted: {}".format("New flower", Newanswer))
3.2. Kết quả

Hình 3. . Kết quả của chương trình


CHƯƠNG 4: KẾT LUẬN
Qua quá trình tìm hiểu, phân tích nghiên cứu đề tài “ứng dụng thuật toán K-
NN vào bài toán phân loại hoa Diên Vĩ ”, chúng em đã hiểu hơn về công nghệ học
máy nói chung cũng như thuật toán K-NN nói riêng.

Trên đây là toàn bộ đề tài của chúng em trong quá trình xây dựng đề tài
“Ứng dụng thuật toán K-NN vào bài toán phân loại hoa Diên Vĩ ”. Tuy đã hoàn
thành đề tài nhưng do kinh nghiệm còn thiếu, trong quá trình khảo sát, phân tích
thiết kế còn gặp nhiều khó khăn nên mô hình chưa được toàn diện. Ngoài ra, đề tài
khi đem áp dụng vào thực tế tuy đã đáp ứng được một số yêu cầu được đặt ra, song
còn xuất hiện một số vấn đề nảy sinh, đòi hỏi cần phải được nâng cấp. Vì vậy nếu
có cơ hội, chúng em hi vọng sẽ nhận được những ý kiến góp ý của quý thầy cô để
bài báo cáo được hoàn thiện hơn.

Chúng em xin chân thành cảm ơn!


TÀI LIỆU THAM KHẢO

[1] Linear Regression - Wikipedia

[2] Simple Linear Regression Tutorial for Machine Learning

[3] [Link]

[4] [Link]

[5] Bài giảng Học máy – thầy Nguyễn Đức Hồng

You might also like