1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo tổng kết trí tuệ nhân tạo ai tự Động bẻ khóa hcapcha (breaking the hcapcha)

57 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Tổng Kết Trí Tuệ Nhân Tạo Ai Tự Động Bẻ Khóa Hcapcha (Breaking The Hcapcha)
Tác giả Lê Thanh Phương, Nguyễn Hoàng Danh, Phạm Nguyễn Hữu Toàn
Người hướng dẫn Ths. Nguyễn Hải Vĩnh Cường
Trường học Trường Đại Học Thủ Dầu Một
Chuyên ngành Kỹ Thuật Công Nghệ
Thể loại báo cáo
Năm xuất bản 2022
Thành phố Thủ Dầu Một
Định dạng
Số trang 57
Dung lượng 1,17 MB

Nội dung

Tính dễ sử dụng: Pillow là một thư viện dễ sử dụng và có tài liệu phong phú, cung cấp cho người dùng một số phương pháp để tạo ra các hiệu ứng đặc biệt trên ảnh.. Có nhiều hướng dẫn và t

Trang 1

VIỆN KỸ THUẬT CÔNG NGHỆ

BÁO CÁO TỔNG KẾTTRÍ TUỆ NHÂN TẠO

AI TỰ ĐỘNG BẺ KHÓA HCAPCHA (BREAKING THE

HCAPCHA)

GVHD: Ths Nguyễn Hải Vĩnh Cường

SVTH: Lê Thanh Phương - 2024802010231

Nguyễn Hoàng Danh - 2024802010387Phạm Nguyễn Hữu Toàn - 2024802010293

Trang 2

VIỆN KỸ THUẬT CÔNG NGHỆ

BÁO CÁO TỔNG KẾTTRÍ TUỆ NHÂN TẠO

AI TỰ ĐỘNG BẺ KHÓA HCAPCHA (BREAKING THE

HCAPCHA)

GVHD: Ths Nguyễn Hải Vĩnh Cường

SVTH: Lê Thanh Phương - 2024802010231

Nguyễn Hoàng Danh - 2024802010387Phạm Nguyễn Hữu Toàn - 2024802010293

Trang 3

LỜI NÓI ĐẦU 1

A NỘI DUNG 2

CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 2

1 Gi i thi u đềề tài ớ ệ 2

1.1 Tền đềề tài 2

1.2 Lí do ch n đềề tài ọ 2

1.3 M c tiều nghiền c u ụ ứ 2

1.4 Đốối t ượ ng, ph m vi nghiền c u, cách tiềốp c n và ph ạ ứ ậ ươ ng pháp nghiền c u: ứ 2

CHƯƠNG 2 CƠ SỞ LÍ THUYẾT 4

1 Phầền mềền s d ng ử ụ 4

1.1 Goole Colab 4

2 Th vi n ư ệ 4

2.1 Split folders 4

2.2 Pandas 4

2.3 Random 5

2.4 Pillow (PIL) 6

2.5 CV2 8

2.6 Matplotlib 9

2.7 Numpy 10

2.8 Warnings 11

2.9 Statistics 12

2.10 Sklearn 13

2.11 itertools 16

2.12 operator 18

3 Logistic regression 19

4 Mố hình bài toán 19

4.1 KNN (K-Nearest Neighbors) 19

4.2 SVM (Support Vector Machine) 20

CHƯƠNG 3 MÔ HÌNH BÀI TOÁN 23

CHƯƠNG 4 THỰC NGHIỆM 24

1 Lầốy d li u t b d li u ữ ệ ừ ộ ữ ệ 24

2 Làm s ch và tr c quan hóa d li u ạ ự ữ ệ 25

Trang 4

3 S d ng Hốềi quy Logistic ử ụ 36

4 Train mố hình KNN v i b d li u training ớ ộ ữ ệ 37

5 Train mố hình SVM trền b d li u gốốc ộ ữ ệ 42

6 Đánh giá và so sánh các mố hình phần lo i trền test set đ ạ ượ c cung cầốp 47

7 Kềốt quả 53

CHƯƠNG 5 KẾT LUẬN 58

B TÀI LIỆU THAM KHẢO 59

AI tự động bẻ khóa hcapcha (Breaking the hcapcha)

Trang 5

Năm 2023, việc lướt web, sử dụng mạng internet là điều không thể thiếu Điều này đã là một điều quá bình thường, mạng internet giúp mọi người kết nối lại với nhau, gia tăng kimh tế của bản thân và nước nhà.

Nhưng cũng vì điều đó mà các website thường có những hệ thống hcapcha để kiểm tra người sử dụng, bắt người dùng phải làm một bài kiểm tra hết sức khó khăn và tốn thời gian sau đó mới cho người dùng sử dụng hệ thống Vậy nên, việc tạo ra một AI giúp bẻ khóa việc làm kiểm tra có thể giúp giảm được phần nào sự khó chịu của hệ thống hcapcha

AI được hình thành nhờ việc sử dụng các thuật toán lại với nhau cũng như sử dụng hai

mô hình KNN và SVM

Các phần của tiểu luận:

Chương 1: Tổng quan đề tài

Chương 2: Cơ sở lí thuyết

Chương 3: Mô hình bài toán

Chương 4: Thực nghiệm

Chương 5: Kết luận

Trang 6

A NỘI DUNG CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI

1 Giới thiệu đề tài.

Việc sứ dụng các website ngày nay đều có hệ thống kiểm tra mỗi lần làm kiểm tra đều rấttốn thời gian Như vậy, làm cách nào để giải hcapcha trên website mà không cần con người phải chạm tay vào? Thời gian giải có thể giảm thiểu được bao nhiêu?

Do đó, bằng việc sử dụng các tiện ích của AI mang lại và kiên thức của môn “Trí tuệ nhân tạo” để tạo ra một AI giúp ích cho việc giảm thiểu thời gian của việc làm kiểm tra hcapcha và việc giải quyết không cần con người phải chạm tay vào

1.3 Mục tiêu nghiên cứu

Xây dựng một AI để bẻ khóa các hchapcha với các mục tiêu sau:

- Tự động bẻ khóa hcapcha

- Thời gian tự động bẻ khóa được tối ưu

- Thay thế phần nào con người trong việc giải quyết hcapcha

1.4 Đối tượng, phạm vi nghiên cứu, cách tiếp cận và phương pháp nghiên cứu:

Đối tượng nghiên cứu: AI tự động bẻ khóa hcapcha

Phạm vi nghiên cứu:

- Nghiên cứu cơ sở lí thuyết và thiết kế

- Ngôn ngữ lập trình python, các mô hình thiết kế, thuật toán

- Sử dụng Google Colab để lập trình

Trang 7

Cách tiếp cận:

- Quan sát và thu thập các vấn đề về việc giải hcapcha để có thể thiết kế AI

có tính năng tốt nhất

Phương pháp nghiên cứu:

- Tham khảo, nghiên cứu thêm các tài liệu trên trang web, trang báo, tìm hiểutình hình thực trạng của đề tài

Trang 8

CHƯƠNG 2 CƠ SỞ LÍ THUYẾT

1 Phần mền sử dụng 1.1 Google Colab

Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google Research, nó cho phép chạy các dòng code python thông qua trình duyệt, đặc biệt phù hợp với Data analysis, machine learning và giáo dục Colab không cần yêu cầu cài đặt hay cấu hình máy tính, mọi thứ có thể chạy thông qua trình duyệt, bạn có thể sử dụng tài nguyên máy tính từ CPU tốc độ cao và cả GPUs và cả TPUs đều được cung cấp cho bạn

Colab cung cấp nhiều loại GPU, thường là Nvidia K80s, T4s, P4s and P100s, tuy nhiên người dùng không thể chọn loại GPU trong Colab, GPU trong Colab thay đổi theo thời gian Vì là dịch vụ miễn phí, nên Colab sẽ có những thứ tự ưu tiên trong việc sử dụng tài nguyên hệ thống, cũng như giới hạn thời gian sử dụng, thời gian sử dụng tối đa lên tới 12 giờ

2 Thư viện 2.1 Split folders

Tách các thư mục có tệp (ví dụ: hình ảnh) thành các thư mục đào tạo, xác thực và kiểm tra (tập dữ liệu)

2.2 Pandas

Pandas là một thư viện mã nguồn mở được phát triển bởi Wes McKinney vào năm 2008 Pandas được sử dụng chủ yếu để thao tác, phân tích và dọn dẹp dữ liệu Pandas cung cấp rất nhiều cấu trúc dữ liệu cũng như các phép tính hỗ trợ thao tác dữ liệu số và dữ liệu thờigian(time series) Pandas nhanh, mạnh và hiệu quả

- Ưu điểm:

Nhanh và hiệu quả trong thao tác và phân tích dữ liệu

Có thể lấy dữ liệu từ nhiều nguồn dữ liệu khác nhau

Dễ dàng xử lí các dữ liệu bị thiếu (đại diện bởi : NaN)

Kích thước linh hoạt: có thể dễ dàng insert và delete dữ liệu

Linh hoạt trong việc reshape và pivot dataset

Cung cấp các chức năng time-series cũng như các chức năng nhóm dữ liệu(group)

- Nhược điểm:

Trang 9

Tốc độ xử lý chậm: Pandas chậm hơn so với các thư viện khác như NumPy

và dplyr khi xử lý các bộ dữ liệu lớn Điều này đặc biệt đáng chú ý khi bạn phải xử lý hàng triệu hoặc hàng tỉ dòng dữ liệu

Khả năng xử lý dữ liệu khó đọc: Pandas có thể xử lý nhiều định dạng tệp khác nhau, nhưng đôi khi có thể gặp khó khăn khi đọc các tệp dữ liệu không chuẩn

Tính linh hoạt thấp hơn: Pandas không phải là một công cụ hoàn hảo cho tất cả các loại tác vụ xử lý dữ liệu Một số tác vụ phức tạp có thể yêu cầu sựkết hợp của nhiều thư viện khác nhau để đạt được hiệu quả cao nhất.Tài liệu hạn chế: Mặc dù Pandas là một thư viện phổ biến, nhưng tài liệu của nó vẫn hạn chế Một số chức năng phức tạp có thể yêu cầu kiến thức chuyên sâu và sự tìm kiếm nhiều nguồn tài liệu để thực hiện

Bộ nhớ chiếm dụng: Pandas có thể sử dụng nhiều bộ nhớ hơn so với các thư viện khác, đặc biệt là khi xử lý các bộ dữ liệu lớn Nếu bạn không cẩn thận, có thể gặp phải vấn đề về hiệu suất hoặc lỗi bộ nhớ

2.3 Random.

Random number generator (RNG) là một số được tạo ra ngẫu nhiên từ máy tính, và thường có hai loại khác nhau:

Số được tạo ra từ phần cứng, cách này thường sẽ không giải được

Số được tạo ra nhờ một thuật toán nào đó, cách này giải được nếu bạn biết thuật toán

Trong thực tế thì số ngẫu nhiên thường được sử dụng trong những chương trình trao giải thưởng ngẫu nhiên

- Ưu điểm

Thư viện random có rất nhiều hàm hỗ trợ việc tạo và xử lý số ngẫu nhiên, cho phép bạn tạo số ngẫu nhiên từ nhiều phân phối khác nhau, như phân phối chuẩn, phân phối Poisson, phân phối đều, vv

Random hỗ trợ tạo số ngẫu nhiên với nhiều loại kiểu dữ liệu khác nhau, baogồm cả số nguyên và số thực

Thư viện random được tích hợp sẵn trong Python, nên bạn có thể sử dụng

nó mà không cần phải cài đặt bất kỳ thư viện nào khác

Trang 10

Các hàm trong thư viện random được thiết kế để trả về kết quả ngẫu nhiên chính xác và đáng tin cậy.

Nếu sử dụng sai cách, thư viện random có thể dẫn đến kết quả không đáng tin cậy hoặc sai sót trong tính toán

2.4 Pillow (PIL)

Thư viện Pillow trong Python là một thư viện mã nguồn mở được sử dụng để xử lý ảnh Thư viện này được phát triển dựa trên thư viện PIL (Python Imaging Library), nhưng đã được cập nhật và bổ sung thêm các tính năng mới hơn

Pillow cung cấp nhiều phương pháp để đọc, ghi và xử lý các tệp ảnh khác nhau, bao gồm

cả các định dạng phổ biến như JPEG, PNG, BMP, GIF, TIFF, và WebP Nó cũng cung cấpcác chức năng phân tích và xử lý ảnh như thay đổi kích thước, xoay, cắt, chỉnh sửa màu sắc và độ sáng, và chuyển đổi định dạng

Pillow là một thư viện dễ sử dụng, có tài liệu rõ ràng và được hỗ trợ bởi cộng đồng lớn

Nó cũng có tính tương thích tốt với các phiên bản Python khác nhau và các hệ điều hành khác nhau, làm cho nó trở thành một trong những thư viện xử lý ảnh phổ biến nhất trong Python

- Ưu điểm :

Tính linh hoạt: Pillow hỗ trợ đọc và ghi các định dạng ảnh phổ biến như JPEG, PNG, BMP, GIF, TIFF và WebP Nó cũng có thể thực hiện các thao tác phức tạp trên ảnh như xoay, cắt, chỉnh sửa màu sắc, độ sáng, chuyển đổiđịnh dạng và thay đổi kích thước

Tính dễ sử dụng: Pillow là một thư viện dễ sử dụng và có tài liệu phong phú, cung cấp cho người dùng một số phương pháp để tạo ra các hiệu ứng đặc biệt trên ảnh Pillow cũng có nhiều ví dụ minh họa để giúp người dùng hiểu rõ hơn về cách sử dụng các phương pháp

Trang 11

Tính di động: Pillow có thể chạy trên nhiều hệ điều hành khác nhau, bao gồm Windows, MacOS và Linux.

Tính tương thích: Pillow có tính tương thích tốt với các phiên bản Python khác nhau, điều này giúp cho việc phát triển ứng dụng dễ dàng hơn

cv2 cung cấp cho người dùng các công cụ và phương pháp để thực hiện các tác vụ xử lý ảnh như đọc, ghi, hiển thị ảnh, xử lý ảnh, phân tích và trích xuất các đối tượng từ ảnh cv2 cũng hỗ trợ các tính năng khác nhau như đọc và ghi video, chụp ảnh từ camera và phân tích dữ liệu từ stream video

cv2 cũng được sử dụng rộng rãi trong các ứng dụng thị giác máy tính như nhận dạng khuôn mặt, phát hiện đối tượng, phát hiện chuyển động, xử lý ảnh y tế và các ứng dụng khác trong ngành công nghiệp và nghiên cứu

Tốc độ xử lý nhanh: cv2 là một thư viện được viết bằng ngôn ngữ lập trình C++, cho phép thực hiện các tính toán xử lý ảnh nhanh hơn so với các thư viện khác

Trang 12

Có nhiều hướng dẫn và tài liệu: cv2 là một thư viện phổ biến và có rất nhiều hướng dẫn và tài liệu trên internet, giúp cho người dùng có thể dễ dàng học và sử dụng thư viện này.

Có sẵn nhiều công cụ phân tích và xử lý ảnh: cv2 cung cấp cho người dùng các công cụ và phương pháp để thực hiện các tác vụ phân tích và xử lý ảnh phức tạp như nhận dạng khuôn mặt, phát hiện đối tượng, trích xuất đặc trưng, v.v

- Nhược điểm:

Tính phức tạp: cv2 là một thư viện phức tạp và khó sử dụng cho người mới bắt đầu học Người dùng cần phải có kiến thức về lập trình, toán học và xử

lý ảnh để có thể sử dụng thư viện này hiệu quả

Thiếu tính năng trong việc xử lý ảnh phức tạp: cv2 không thể thực hiện một

số tác vụ xử lý ảnh phức tạp như xử lý ảnh 3D hoặc ảnh y tế

Không có tính tương thích đa nền tảng: cv2 được phát triển chủ yếu cho hệ điều hành Windows, Mac và Linux, không tương thích với các nền tảng khác như điện thoại di động hay các thiết bị IoT

Có thể gặp phải vấn đề về cài đặt: Việc cài đặt cv2 có thể gặp một số khó khăn do cv2 là một thư viện được viết bằng ngôn ngữ lập trình C++ và có

sử dụng một số thư viện hỗ trợ khác, vì vậy việc cài đặt và sử dụng thư việnnày có thể gặp một số vấn đề về phụ thuộc và tương thích với các phiên bảnPython, các thư viện hỗ trợ và hệ điều hành khác nhau

Không đơn giản trong việc xử lý video: Trong cv2, việc xử lý video có thể phức tạp hơn so với xử lý ảnh và yêu cầu kiến thức kỹ thuật cao hơn về thuật toán xử lý video, nên việc sử dụng cv2 để xử lý video cũng có thể khókhăn hơn so với xử lý ảnh

2.6 Matplotlib

Matplotlib là một thư viện được sử dụng trong ngôn ngữ lập trình Python để tạo và hiển thị các biểu đồ, đồ thị, biểu đồ tương tác và hình ảnh khoa học dưới nhiều dạng khác nhau Nó cho phép người dùng tạo ra các loại đồ thị phức tạp, bao gồm đồ thị đường, đồ thị cột, biểu đồ phân tán, đồ thị radar, histogram và nhiều loại đồ thị khác

Matplotlib cung cấp các hàm và lớp để tạo ra các đồ thị, cho phép người dùng tùy chỉnh các thuộc tính và định dạng để hiển thị các đồ thị theo cách tùy chỉnh Ngoài ra, Matplotlib còn có khả năng lưu trữ các đồ thị dưới dạng file hình ảnh hoặc file vector để

sử dụng cho các mục đích khác nhau

Trang 13

Matplotlib được sử dụng rộng rãi trong các lĩnh vực như khoa học, kỹ thuật, thống kê, tài chính, y học và nhiều lĩnh vực khác Nó là một trong những thư viện tạo đồ thị được sử dụng nhiều nhất trong Python và được đánh giá cao về tính linh hoạt, tùy biến và khả năng hiển thị đồ thị chất lượng cao.

- Ưu điểm:

Được sử dụng rộng rãi: Matplotlib là một trong những thư viện tạo đồ thị được sử dụng rộng rãi nhất trong Python Nó được sử dụng trong các lĩnh vực như khoa học, kỹ thuật, thống kê, tài chính và y học

Tính linh hoạt: Matplotlib cho phép người dùng tạo ra nhiều loại đồ thị và biểu đồ khác nhau Nó cũng cho phép người dùng tùy chỉnh các thuộc tính

và định dạng để hiển thị các đồ thị theo cách tùy chỉnh

Tính tương thích cao: Matplotlib có khả năng tương thích với nhiều loại dữ liệu và cũng có thể được sử dụng trong nhiều môi trường lập trình khác nhau

Có tài liệu phong phú: Matplotlib có tài liệu phong phú với nhiều ví dụ cụ thể để giúp người dùng có thể dễ dàng sử dụng thư viện

Hỗ trợ đa nền tảng: Matplotlib có thể chạy trên các nền tảng khác nhau như Windows, MacOS và Linux

- Nhược điểm:

Cú pháp khó hiểu: Cú pháp của Matplotlib có thể khó hiểu với người dùng mới bắt đầu sử dụng Điều này có thể gây khó khăn trong việc tạo và tùy chỉnh các đồ thị

Hiển thị đồ thị chậm: Khi tạo các đồ thị phức tạp, Matplotlib có thể hiển thị

đồ thị chậm hơn so với một số thư viện tạo đồ thị khác

Yêu cầu kiến thức lập trình nâng cao: Matplotlib yêu cầu người dùng có kiến thức lập trình nâng cao để có thể tùy chỉnh và xử lý các đồ thị phức tạp

- Ưu điểm:

Trang 14

Hiệu suất cao: NumPy là một thư viện tính toán khoa học mạnh mẽ, cho phép xử lý dữ liệu nhanh chóng và hiệu quả hơn so với các phương pháp xử

lý thông thường trong Python

Tính linh hoạt: NumPy cung cấp nhiều chức năng để thao tác với mảng đa chiều, bao gồm cả trích xuất, cắt, gộp và phân tách các mảng Nó cũng hỗ trợ các phép toán trên mảng như phép cộng, trừ, nhân, chia và lũy thừa

Hỗ trợ các phép toán ma trận: NumPy có khả năng hỗ trợ các phép toán ma trận và tính toán đại số tuyến tính

Khả năng mở rộng: NumPy có thể được mở rộng để hỗ trợ các loại dữ liệu mới và các thuật toán tính toán khác

Tài liệu phong phú: NumPy có tài liệu phong phú và nhiều ví dụ cụ thể để giúp người dùng có thể dễ dàng sử dụng thư viện

Yêu cầu kiến thức về lập trình và toán học: NumPy yêu cầu người dùng có kiến thức về lập trình và toán học để có thể sử dụng thư viện một cách hiệu quả

2.8 Warnings

Thư viện warnings là một thư viện được sử dụng để cung cấp các cảnh báo trong quá trình thực thi chương trình Khi một chương trình được thực thi, các cảnh báo thường được sử dụng để cảnh báo cho người dùng về các vấn đề có thể ảnh hưởng đến hoạt độngcủa chương trình

- Ưu điểm:

Cảnh báo được đưa ra khi xảy ra lỗi nhỏ: Thư viện warnings cung cấp các cảnh báo để cảnh báo về các lỗi nhỏ trong chương trình, giúp người dùng

có thể nhanh chóng tìm và sửa chữa các lỗi này

Giúp người dùng giám sát hoạt động của chương trình: Thư viện warnings cung cấp các cảnh báo để giúp người dùng giám sát hoạt động của chương trình trong quá trình thực thi

Trang 15

Có thể được tùy chỉnh: Người dùng có thể tùy chỉnh các cảnh báo được phát ra bởi thư viện warnings, bao gồm cả cách mà các cảnh báo được hiển thị và cách xử lý các cảnh báo.

- Nhược điểm:

Không phải lúc nào cũng cần thiết: Trong một số trường hợp, sử dụng các cảnh báo có thể làm cho chương trình trở nên rối ren và khó hiểu.Không phải là một giải pháp hoàn hảo: Thư viện warnings không thể giải quyết tất cả các vấn đề có thể xảy ra trong chương trình

Có thể ảnh hưởng đến hiệu suất: Sử dụng các cảnh báo trong chương trình

có thể làm giảm hiệu suất của chương trình

2.9 Statistics

Thư viện statistics là một thư viện được sử dụng để tính toán các thống kê cơ bản trên dữ liệu số Thư viện này cung cấp nhiều hàm để tính các giá trị thống kê, bao gồm trung bình, độ lệch chuẩn, trung vị, phương sai, skewness, kurtosis và nhiều hơn nữa

Không thể giải quyết tất cả các vấn đề: Thư viện statistics không thể giải quyết tất cả các vấn đề liên quan đến thống kê Khi cần xử lý các vấn đề phức tạp hơn, người dùng cần phải sử dụng các thư viện khác hoặc phải tự viết mã

2.10 Sklearn

Scikit-learn (hay sklearn) là một thư viện mã nguồn mở của Python được sử dụng rộng rãi để xử lý các vấn đề liên quan đến Machine Learning (học máy) Thư viện này cung cấp nhiều công cụ để xử lý các tác vụ liên quan đến học máy, bao gồm:

Trang 16

Preprocessing data: Thư viện sklearn cung cấp các công cụ để chuẩn hóa, tiền xử lý, tách tập dữ liệu và mã hóa các biến đầu vào.

Supervised learning: Thư viện sklearn cung cấp nhiều mô hình máy học được sử dụng cho các tác vụ phân loại (classification) và dự đoán (regression), bao gồm Decision Tree, Support Vector Machines, Naive Bayes, K-Nearest Neighbors và Neural Networks

Unsupervised learning: Thư viện sklearn cung cấp các mô hình

unsupervised learning như Clustering (phân cụm) và Dimensionality Reduction (giảm chiều dữ liệu), bao gồm K-Means, DBSCAN, PCA và t-SNE

sklearn.neighbors là một module trong thư viện scikit-learn (sklearn) của Python, cung cấp các mô hình và công cụ cho các tác vụ liên quan đến k-nearest neighbors (k-NN), baogồm:

Classification: Tìm kiếm k điểm gần nhất từ tập dữ liệu huấn luyện và dựa vào các nhãn của chúng để dự đoán lớp của điểm mới

Regression: Tìm kiếm k điểm gần nhất từ tập dữ liệu huấn luyện và dựa vàocác giá trị của chúng để dự đoán giá trị của điểm mới

Các mô hình và công cụ trong sklearn.neighbors bao gồm:

Trang 17

KNeighborsClassifier: Mô hình k-NN được sử dụng cho tác vụ phân loại.KNeighborsRegressor: Mô hình k-NN được sử dụng cho tác vụ dự đoán.NearestNeighbors: Công cụ tìm kiếm các điểm gần nhất trong tập dữ liệu.2.10.2 sklearn.model_selection

sklearn.model_selection là một module trong thư viện scikit-learn của Python, cung cấp các công cụ cho các tác vụ liên quan đến lựa chọn mô hình, đánh giá hiệu suất và tinh chỉnh siêu tham số của mô hình Các công cụ trong sklearn.model_selection được sử dụng trong quá trình huấn luyện và kiểm định mô hình

Các công cụ chính của sklearn.model_selection bao gồm:

Train-test split: Chia tập dữ liệu thành hai phần, một phần để huấn luyện

mô hình và một phần để kiểm tra mô hình

K-fold cross-validation: Chia tập dữ liệu thành k phần (folds), huấn luyện

mô hình trên k-1 phần và kiểm định trên phần còn lại, lặp lại quá trình này

k lần với các phân chia khác nhau

Grid search: Tìm kiếm siêu tham số tốt nhất cho mô hình bằng cách thử nghiệm tất cả các giá trị của các siêu tham số trong một lưới các giá trị.Randomized search: Tìm kiếm siêu tham số tốt nhất cho mô hình bằng cáchthử nghiệm một số lượng ngẫu nhiên các giá trị của các siêu tham số.Stratified sampling: Chia tập dữ liệu thành các nhóm tương tự nhau về một

số đặc trưng quan trọng và sử dụng phương pháp lấy mẫu để chọn các mẫu đại diện cho mỗi nhóm

2.10.3 sklearn.metrics

sklearn.metrics là một module trong thư viện scikit-learn của Python, cung cấp các công

cụ để đánh giá hiệu suất của các mô hình học máy Module này cung cấp các hàm tính toán các độ đo khác nhau để đánh giá mô hình trên tập dữ liệu đầu vào

Một số công cụ chính trong sklearn.metrics bao gồm:

Accuracy score: tính độ chính xác của mô hình

Precision và recall: tính độ chính xác của mô hình dự đoán các lớp dương

và số lượng các lớp dương được tìm thấy trong tất cả các trường hợp thực tế

F1-score: tính toán trung bình điều hòa giữa precision và recall

ROC curve và AUC: đánh giá độ chính xác của mô hình phân loại nhị phân

Trang 18

Confusion matrix: hiển thị số lần mô hình dự đoán đúng hoặc sai trên tập

dữ liệu

2.10.4 sklearn.svm

sklearn.svm là một module trong thư viện Scikit-learn của Python, cung cấp các công cụ

để xây dựng và huấn luyện các mô hình máy học SVM (Support Vector Machines) SVM

là một phương pháp học có giám sát được sử dụng cho việc phân loại và dự đoán.Các loại mô hình SVM được hỗ trợ trong sklearn.svm bao gồm:

SVC (Support Vector Classification): là một mô hình phân loại dùng để phân loại các điểm dữ liệu vào một hoặc nhiều lớp

NuSVC: tương tự như SVC, nhưng cho phép điều chỉnh tham số nu để kiểm soát tỷ lệ dữ liệu nằm trong vùng hỗ trợ

LinearSVC: là một mô hình phân loại tuyến tính cho phép tìm ra siêu mặt phẳng phân chia các lớp dữ liệu

SVR (Support Vector Regression): là một mô hình hồi quy dùng để dự đoángiá trị đầu ra của một biến liên tục

2.10.5 sklearn.linear_model

sklearn.linear_model là một module trong thư viện Scikit-learn của Python, cung cấp các công cụ để xây dựng và huấn luyện các mô hình hồi quy tuyến tính và logistic regression.Đây là một trong những công cụ quan trọng trong Machine Learning, được sử dụng rộng rãi trong các bài toán dự đoán và phân loại

Các loại mô hình hồi quy tuyến tính được hỗ trợ trong sklearn.linear_model bao gồm:

LinearRegression: là một mô hình hồi quy tuyến tính đơn giản, dùng để tìmmối quan hệ giữa các biến đầu vào và biến đầu ra

Ridge: là một mô hình hồi quy tuyến tính dùng để giảm thiểu overfitting bằng cách thêm vào hàm mất mát một thành phần giảm thiểu giá trị của các

Trang 19

2.11 itertools

itertools là một module trong Python cung cấp một tập hợp các công cụ cho việc tạo ra các iterators (vòng lặp) và iterable objects (đối tượng có thể duyệt qua) hiệu quả Các công cụ này giúp cho việc lập trình trở nên đơn giản và tối ưu hơn, đồng thời giúp cho việc sử dụng bộ nhớ và tài nguyên máy tính hiệu quả hơn

itertools cung cấp nhiều hàm để tạo ra các iterator và các đối tượng có thể duyệt qua Các hàm chính bao gồm:

chain(): Kết hợp nhiều iterable object vào một iterator duy nhất

count(): Tạo ra một iterator cho phép đếm từ một số bắt đầu đến vô cựccycle(): Tạo ra một iterator lặp đi lặp lại các phần tử trong một iterable object

repeat(): Tạo ra một iterator lặp lại một giá trị cho đến khi gặp phải giới hạn

product(): Tạo ra các bộ tích của các phần tử trong các iterable object

- Ưu điểm:

Giảm thiểu lỗi và tối ưu hóa việc lập trình: itertools cung cấp các công cụ

để tạo ra các iterator và các đối tượng có thể duyệt qua, giúp giảm thiểu lỗi

và tối ưu hóa việc lập trình

Tiết kiệm bộ nhớ và tài nguyên máy tính: itertools chỉ tạo ra các iterator khiđược yêu cầu, giúp tiết kiệm bộ nhớ và tài nguyên máy tính

Linh hoạt và đa dạng: itertools cung cấp nhiều công cụ khác nhau để tạo ra các iterator và các đối tượng có thể duyệt qua, giúp cho việc lập trình trở nên đa dạng và linh hoạt hơn

- Nhược điểm:

Không thể sử dụng cho các trường hợp đặc biệt: itertools là một thư viện rất

đa dụng, nhưng nó không thể sử dụng cho tất cả các trường hợp Đôi khi

Trang 20

bạn cần tạo ra các iterator và đối tượng có thể duyệt qua riêng biệt để đáp ứng yêu cầu của mình.

Không hỗ trợ cho các tác vụ phức tạp: itertools không cung cấp các công cụ

để xử lý các tác vụ phức tạp, như phân tích ngôn ngữ tự nhiên hoặc phân tích cú pháp

2.12 operator

Trong Python, operator là một thư viện chuẩn cung cấp các hàm và toán tử được sử dụng

để thực hiện các thao tác toán học và logic trên các đối tượng trong Python Thư viện nàycho phép bạn thực hiện các phép toán trên các đối tượng không chỉ giới hạn ở các kiểu dữliệu số học nhưng còn có thể sử dụng cho các kiểu dữ liệu khác như chuỗi và danh sách

Logistic regression là một phương pháp phân tích thống kê được sử dụng để mô hình hóa

và dự đoán xác suất của một kết quả nhị phân (ví dụ: có/không, thành công/ thất bại) dựa trên một hoặc nhiều biến độc lập (biến giải thích) Nó là một trong những phương pháp phân tích phổ biến nhất trong khoa học dữ liệu và machine learning, được sử dụng rộng rãi trong các ứng dụng thực tế như dự đoán khả năng mua hàng của khách hàng, phân

Trang 21

loại email là spam hoặc không phải spam, dự đoán khả năng tiêm chủng của người dân, v.v.

4 Mô hình bài toán 4.1 KNN (K-Nearest Neighbors)

Mô hình KNN (K-Nearest Neighbors) là một thuật toán học máy cho bài toán phân loại hoặc dự đoán giá trị dựa trên dữ liệu đầu vào

Cơ bản, mô hình KNN là một mô hình không có học tập, có nghĩa là nó không cần phải huấn luyện trước khi áp dụng cho dữ liệu mới Thay vào đó, mô hình KNN phân loại hoặc dự đoán các điểm dữ liệu mới dựa trên cách chúng gần với các điểm dữ liệu đã biết trong tập huấn luyện

Một trong những ưu điểm của mô hình KNN là nó đơn giản và dễ hiểu, đặc biệt là đối vớinhững người mới bắt đầu học về học máy Tuy nhiên, nó có nhược điểm là yêu cầu tốn kém tính toán khi kích thước của tập huấn luyện lớn và không hoạt động tốt với các tập

dữ liệu có nhiều chiều

Mô hình KNN hoạt động theo cách tìm kiếm các điểm dữ liệu trong tập huấn luyện gần nhất với điểm dữ liệu cần phân loại hoặc dự đoán Cụ thể, mô hình KNN được thực hiện bằng các bước sau đây:

Chuẩn bị dữ liệu huấn luyện: Dữ liệu huấn luyện là tập dữ liệu được sử dụng để xây dựng mô hình KNN Mỗi điểm dữ liệu trong tập huấn luyện có các thuộc tính

và nhãn tương ứng

Chọn giá trị K: Giá trị K là số lượng điểm gần nhất được sử dụng để phân loại hoặc dự đoán cho một điểm dữ liệu mới Giá trị K thường được lựa chọn bằng cách thử nghiệm và đánh giá hiệu quả trên tập dữ liệu

Đưa ra dự đoán cho một điểm dữ liệu mới: Khi một điểm dữ liệu mới được cung cấp, mô hình KNN tìm kiếm K điểm dữ liệu gần nhất trong tập huấn luyện Kết quả của mô hình phụ thuộc vào loại bài toán:

Đối với bài toán phân loại: Mô hình sử dụng đa số phiếu (majority voting)

để đưa ra quyết định về nhãn của điểm dữ liệu mới Tức là, nhãn của điểm

dữ liệu mới được xác định bằng cách chọn nhãn xuất hiện nhiều nhất trong

K điểm gần nhất

Đối với bài toán dự đoán giá trị: Mô hình tính trung bình giá trị của K điểm gần nhất và sử dụng giá trị trung bình này làm dự đoán cho điểm dữ liệu mới

Trang 22

Đánh giá độ chính xác của mô hình: Để đánh giá độ chính xác của mô hình, thường sử dụng các phương pháp kiểm tra chéo (cross-validation) hoặc chia tập dữliệu thành hai phần: tập huấn luyện và tập kiểm tra.

4.2 SVM (Support Vector Machine)

SVM (Support Vector Machine) là một thuật toán học máy phân loại và dự đoán, được sửdụng để giải quyết các bài toán phân loại tuyến tính và phi tuyến tính Thuật toán SVM tìm ra siêu phẳng (hyperplane) tốt nhất phân tách các lớp dữ liệu

Các bước thực hiện thuật toán SVM như sau:

1 Chuẩn bị dữ liệu huấn luyện: Dữ liệu huấn luyện là tập dữ liệu được sử dụng để xây dựng mô hình SVM Mỗi điểm dữ liệu trong tập huấn luyện cócác thuộc tính và nhãn tương ứng (ví dụ: giá trị các thuộc tính của một ngôi nhà và nhãn tương ứng là giá trị thực của ngôi nhà đó)

2 Xác định siêu phẳng tốt nhất phân tách các lớp dữ liệu: Một siêu phẳng là một phẳng trong không gian có số chiều bằng số thuộc tính của dữ liệu Trong bài toán phân loại hai lớp, siêu phẳng được sử dụng để phân tách hai lớp dữ liệu Mô hình SVM tìm siêu phẳng tốt nhất phân tách hai lớp bằng cách tìm đường kẻ vuông góc với siêu phẳng và đi qua điểm gần nhất của mỗi lớp Đường này được gọi là đường phân chia tối đa (maximum margin hyperplane)

3 Xử lý dữ liệu phi tuyến: Trong một số trường hợp, dữ liệu không thể phân tách tuyến tính bằng siêu phẳng Trong trường hợp này, SVM sử dụng một

kỹ thuật gọi là kernel trick để chuyển đổi không gian dữ liệu ban đầu sang không gian mới có thể phân tách tuyến tính

4 Đưa ra dự đoán cho một điểm dữ liệu mới: Khi một điểm dữ liệu mới được cung cấp, mô hình SVM đưa ra dự đoán bằng cách xác định lớp của điểm

đó bằng cách so sánh với siêu phẳng đã được xác định

5 Đánh giá độ chính xác của mô hình: Để đánh giá độ chính xác của mô hình,

ta thường sử dụng các phương pháp kiểm tra chéo (cross-validation) hoặc chia tập dữ liệu thành hai phần: tập huấn luyện và tập kiểm tra

Một số lưu ý khi sử dụng SVM:

Lựa chọn hàm kernel: Kernel là một hàm số dùng để ánh xạ dữ liệu từ không gian ban đầu sang không gian mới Hàm kernel thường được sử dụng để giải quyết bài toán phân loại phi tuyến tính Các hàm kernel phổ biến bao gồm: linear, polynomial, RBF (radial basis function), sigmoid

Trang 23

Điều chỉnh siêu tham số (hyperparameters): SVM có các siêu tham số như tham số độ rộng dải (C), tham số gamma trong hàm kernel Việc điều chỉnh các siêu tham số này là rất quan trọng để đạt được kết quả tốt nhất.Đối với bài toán phân loại đa lớp (multi-class classification): SVM có thể được sử dụng để phân loại đa lớp bằng các phương pháp one-vs-all hoặc one-vs-one Trong phương pháp one-vs-all, một mô hình SVM được xây dựng cho mỗi lớp, trong khi đó phương pháp one-vs-one sử dụng nhiều mô hình SVM để phân loại từng cặp lớp.

Đối với dữ liệu không cân bằng: SVM cũng có thể được sử dụng để giải quyết bài toán phân loại dữ liệu không cân bằng Trong trường hợp này, phương pháp SVM được điều chỉnh để giảm thiểu sai sót phân loại trên lớp thiểu số (minority class) và tăng độ chính xác trên lớp đa số (majority class)

Đối với bài toán hồi quy: SVM cũng có thể được sử dụng để giải quyết bài toán hồi quy bằng cách sử dụng một mô hình SVM hồi quy (SVR) Mục tiêu của SVR là tìm một siêu phẳng tối ưu để dự đoán giá trị đầu ra liên tục,chứ không phải là phân loại như trong bài toán phân loại

SVM là một trong những thuật toán phân loại mạnh nhất trong học máy Tuy nhiên, việc lựa chọn hàm kernel và điều chỉnh các siêu tham số là rất quan trọng để đạt được kết quả tốt nhất Ngoài ra, SVM cũng có thể khó khăn để xử lý với các tập dữ liệu lớn vì nó có độphức tạp tính toán cao

Trang 24

CHƯƠNG 3 MÔ HÌNH BÀI TOÁN

Trang 25

CHƯƠNG 4 THỰC NGHIỆM

1 Lấy dữ liệu từ bộ dữ liệu

a) Đầu tiên, tiến hành lấy dữ liệu từ bộ dữ liệu

Sử dụng split-folders để tách dữ liệu thành 2 loại:

Trang 26

b) Chia dữ liệu thành train và validation:

Train:

Validation:

2 Làm sạch và trực quan hóa dữ liệu

a) Kiểm tra các labels trong tập dữ liệu Xét xem có bao nhiêu hình ảnh thuộc về mỗi class

os.listdir( "./train" )

os.listdir( "./val" )

labels = os.listdir( "./train" )

print(labels)

Trang 27

b) Tổng số dữ liệu của training và testing

c) Hàm để hiển thị một hình ảnh ngẫu nhiên và tìm kiếm hình dạng của mỗi hình

Tạo một hàm để hiển thị một hình ảnh ngẫu nhiên và hình dạng của ảnh Tìm xem hình dạng của mỗi hình ảnh có giống nhau hay không Nếu không thì tạo tất cả các hình ảnh

for name in labels:

image_number_train = len(os.listdir( f "./train/ {name} )) "

image_number_test = len(os.listdir( f "./val/ {name} )) "

dic = { 'Label' : names, 'Number(training)' : num_train, 'Number(testing)'

: num_test, 'Total' : num_total}

df = pd.DataFrame(dic)

df

print ( f "Total training images: {df[ 'Number(training)' ] sum ()} ) "

print ( f "Total testing images: {df[ 'Number(testing)' ] sum ()} ) "

import random

def random_image( path ): # path = "./train"

Trang 28

for label in labels:

images = os.listdir( f "./train/ {label} " )

for image images: in

img = plt.imread( f "./train/ {label} {image} / " )

img.shape if not in size:

for label in labels:

images = os.listdir( f "./train/ {label} " )

for image images: in

img = cv2.imread( f "./train/ {label} {image} / " )

img.shape == if list (size)[ ]: 1

img = cv2.resize(img, dsize=( 128 128 , ), interpolation=cv2.I

Ngày đăng: 16/01/2025, 18:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN