Báo cáo học máy nâng cao - Công nghệ thông tin | Trường đại học Điện Lực

Báo cáo học máy nâng cao - Công nghệ thông tin | Trường đại học Điện Lực được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
TÊN HỌC PHẦN
HỌC MÁY NÂNG CAO
Đ TI:
XÂY DỰNG MÔ HÌNH NHẬN DẠNG KHUÔN MẶT BẰNG
THUẬT TOÁN PCA & SVM.
Sinh viên thực hiện : NGUYỄN CÔNG TUỆ
Giảng viên hướng dẫn : PHẠM ĐỨC HỒNG
Ngành : CÔNG NGHỆ THÔNG TIN
Chuyên ngành : CÔNG NGHỆ PHẦN MM
Lớp : CNPM3
Khóa : D13
Hà Nội, tháng 2 năm 2022
PHIẾU CHẤM ĐIỂM
Họ và tên giảng
viên
Chữ ký Ghi chú
Giảng viên chấm
1:
Giảng viên chấm
2:
M C L C
CHƯƠNG I: MACHINE LEARNING L GÌ?..........................................................................5
1. Khái niệm machine learning..............................................................................................5
2. Lịch sử hình thành Machine learning...............................................................................6
3. Vì sao Machine learning lại quan trọng?..........................................................................7
4. Một số giải pháp của Machine learning............................................................................7
5. Ứng dụng của Machine learning.......................................................................................9
5.1. Nhận diện hình ảnh/khuôn mặt...............................................................................10
5.2. Tự động nhận diện giọng nói....................................................................................10
5.3. Lĩnh vực tài chính......................................................................................................11
5.4. Tiếp thị bán hàng.......................................................................................................11
5.5. Chăm sóc sức khỏe.....................................................................................................12
6. Những câu hỏi thường gặp về machine learning...........................................................13
6.1. Machine learning được dùng để làm gì?.................................................................13
6.2. Các bước hoạt động của machine learning là gì?...................................................13
6.3. Machine learning phù hợp với ngôn ngữ nào?.......................................................13
CHƯƠNG II: MÔ HÌNH NHẬN DẠNG KHUÔN MẶT BẰNG THUẬT TOÁN PCA &
SVM..............................................................................................................................................14
Phân tích thành phần chính:......................................................................................................15
Máy hỗ trợ vector........................................................................................................................17
Nhận dạng khuôn mặt.................................................................................................................18
Nhập các thư viện và mô-đun có liên quan...........................................................................18
Hình ảnh Numpy Arrays.........................................................................................................19
Mục tiêu & Tên mục tiêu - Nhãn............................................................................................21
Tách thành Train / Test...........................................................................................................24
Giảm kích thước bằng PCA....................................................................................................25
Đào tạo Bộ phân loại SVM......................................................................................................26
Phỏng đoán...............................................................................................................................28
Âm mưu....................................................................................................................................28
Phần kết luận................................................................................................................................31
MỞ ĐẦU
Machine learning là một chủ đề được nhắc đến rất nhiều trong thời gian trở
lại đây bên cạnh trí tuệ nhân tạo, nó được ứng dụng cực kỳ nhiều ở thời điểm hiện
tại trong hầu hết tất cả các lĩnh vực. Trong báo cáo này,chúng ta sẽ cùng tìm hiểu
xem machine learning là gì, các khái niệm cơ bản và cuối cùng là 1 ví dụ đơn giản
cho thấy vì sao nó lại được ứng dụng rộng rãi như vậy ?
CH NG I: MACHINE LEARNING LÀ GÌ?ƯƠ
1. Khái niệm machine learning
Machine learning (tạm dịch: ) có khởi nguồn từ lĩnh vực học máy trí tuệ nhân
tạo (AI). Đây là giải pháp có khả năng khiến các ứng dụng, phần mềm trở nên
thông minh hơn mà không cần thực hiện bất kỳ mã hóa nào. Thông qua dữ liệu đầu
vào, Machine learning có thể dự đoán các giá trị đầu ra mới.
Nhiệm vụ của học máy là tập trung phát triển chương trình máy tính truy cập
dữ liệu và sử dụng chúng để tự học. Mục tiêu chính của hoạt động này là giúp máy
tính tự hoạt động mà không cần sự hỗ trợ của con người.
Machine learning được xem là một phần quan trọng thuộc lĩnh vực khoa học
dữ liệu. Chúng sử dụng các phương pháp thống kê, thuật toán để phân loại, dự
đoán và khám phá những thông tin quan trọng của dữ liệu. Nhờ những chuỗi thông
tin này, người dùng nhanh chóng đưa ra các quyết định trong các hoạt động kinh
doanh của mình. Vì vậy, Machine learning chính là giải pháp lý tưởng giúp doanh
nghiệp tác động đến chỉ số tăng trưởng doanh thu.
2. Lịch sử hình thành Machine learning
Machine learning là thuật ngữ được đặt bởi Arthur Samuel vào năm 1959.
Samuel là một IBMer người Mỹ kiêm nhà tiên phong trong lĩnh vực trí tuệ nhân
tạo và máy tính chơi game. Năm 1960, thuật ngữ học máy phổ biến hơn thông qua
cuốn sách của Nilsson, nội dung đề cập đến việc phân loại máy học.
Machine learning hiện đại bao gồm hai mục tiêu chính: phân loại dữ liệu thông
qua mô hình đã được phát triển và đưa ra dự đoán về kết quả trong tương lai dựa
trên mô hình này.
3. Vì sao Machine learning lại quan trọng?
Machine learning mang lại cái nhìn trực quan về hành vi của khách hàng và các
mô hình hoạt động kinh doanh. Chúng giúp doanh nghiệp xác định những xu
hướng trong tương lai và đưa ra quyết định nhanh chóng hơn. Ngoài ra, Machine
learning còn hỗ trợ sự phát triển của các sản phẩm mới.
Hiện nay, các nền tảng lớn như: Google, Facebook, Uber,…, đã ứng dụng
học máy làm trọng tâm trong hoạt động chính của họ. Đối với các doanh nghiệp,
Machine learning chính là nhân tố thúc đẩy tính cạnh tranh hiệu quả.
4. Một số giải pháp của Machine learning
Machine learning là giải pháp được ứng dụng thông qua các loại thuật toán để phân
tích và dự đoán. Dựa trên những thuật toán này, Machine learning được chia làm
bốn loại: Machine learning được giám sát, Machine learning không được giám sát,
Machine learning bán giám sát và Machine learning tăng cường.
4.1. Machine learning được giám sát
Machine learning được giám sát sử dụng tập dữ liệu được gắn nhãn để phân loại
dữ liệu hoặc dự đoán kết quả chính xác nhất. Phương pháp này có thể điều chỉnh
trọng lượng khi dữ liệu mới được đưa vào mô hình cho đến khi chúng được lắp
một cách thích hợp.
Giải pháp Machine learning có giám sát giúp doanh nghiệp xử lý các vấn đề
thực trên quy mô lớn, như việc phân loại thư rác trong thư mục riêng. Những thuật
toán được sử dụng trong học máy được giám sát là: mạng nơ-ron, hồi quy tuyến
tính, hồi quy logistic, máy vectơ hỗ trợ,…
4.2. Machine learning không được giám sát
Phương pháp này sử dụng các thuật toán Machine learning để phân tích các tập
dữ liệu không được gắn nhãn. Những thuật toán này có khả năng phát hiện nhóm
dữ liệu ẩn mà không cần sự hỗ trợ của con người. Đây là giải pháp lý tưởng để:
phân tích dữ liệu, phân khúc khách hàng, nhận dạng hình ảnh, chiến lược bán chéo,
Bên cạnh đó, Machine learning không giám sát còn giảm số lượng tính năng
trong một mô hình dựa trên việc giảm kích thước. Chúng có hai cách tiếp cận phổ
biến là: phân tích thành phần chính và phân tích giá trị đơn lẻ. Một số thuật toán
khác trong phương pháp nay là: phân cụm k-mean, phân cụm xác suất, mạng nơ-
ron,…
4.3. Machine learning bán giám sát
Đây là sự kết hợp hài hòa giữa học máy được giám sát và không giám sát.
Machine learning bán giám sát sử dụng các dữ liệu gắn nhãn và không gắn nhãn để
đào tạo. Phương pháp này giúp giải quyết các vấn đề không có đủ dữ liệu được gắn
nhãn để đào tạo thuật toán học máy được giám sát.
4.4. Machine learning tăng cường
Machine learning tăng cường là phương pháp học tập dựa trên sự tương tác với
môi trường. Chúng có khả năng thực hiện một mục tiêu nhất định như lái xe hoặc
chơi trò chơi với đối thủ. Phương pháp này được sử dụng để đào tạo máy tính hoàn
thành một quy trình gồm nhiều bước.
5. Ứng dụng của Machine learning
5.1. Nhận diện hình ảnh/khuôn mặt
Đây được xem là ứng dụng phổ biến nhất của Machine learning. Hiện nay, có
rất nhiều trường hợp cần sử dụng nhận diện khuôn mặt, chủ yếu phục vụ cho nhu
cầu bảo mật như: điều tra, xác định tội phạm, hỗ trợ pháp y, mở khóa điện thoại,…
5.2. Tự động nhận diện giọng nói
Tự động nhận diện giọng nói được ứng dụng để chuyển giọng nói thành văn
bản kỹ thuật số. Machine learning hỗ trợ việc xác định danh tính của người dùng
dựa trên giọng nói của họ. Ngoài ra, chúng còn giúp người dùng thực hiện các thao
tác đơn giản thông qua giọng nói.
Những mẫu giọng nói và từ vựng được đưa vào hệ thống để đào tạo mô hình
hoạt động. Hiện tại, hệ thống nhận diện giọng nói được ứng dụng trong các lĩnh
vực sau:
Robot công nghiệp
Quốc phòng và hàng không
Công nghiệp viễn thông
Công nghệ Thông tin và Điện tử Tiêu dùng
Kiểm soát an ninh, tự động hóa
5.3. Lĩnh vực tài chính
Trong lĩnh vực tài chính – ngân hàng, giải pháp học máy được ứng dụng phổ
biến. Những thuật toán Machine learning có khả năng giám sát và đánh giá hành vi
của người dùng. Việc này giúp quá trình phát hiện vấn đề gian lận hoặc không
minh bạch dễ dàng hơn. Bên cạnh đó, người ta còn ứng dụng học máy để kiểm tra
hoạt động rửa tiền phi pháp.
Thông qua sự hỗ trợ của thuật toán, học máy giúp đưa ra quyết định giao dịch
tốt hơn bằng cách phân tích hàng nghìn dữ liệu cùng lúc. Ngoài ra, giải pháp này
rất hiệu quả trong việc tính điểm tín dụng và bảo lãnh phát hành.
5.4. Tiếp thị bán hàng
Machine learning sở hữu các thuật toán xác định khách hàng tiềm năng dựa
trên: lượt truy cập trang web, lượt nhấp chuột, lượt tải xuống, email đã mở,…
Thông qua dữ liệu thu thập được, doanh nghiệp sẽ định hình được các chiến lược
tiếp thị hiệu quả hơn.
Không những thế, học máy còn hỗ trợ việc phân tích cảm xúc của người tiêu
dùng để đánh giá phản ứng của họ đối với sản phẩm. Ngoài ra, chatbots cũng ngày
càng được cải tiến khi có sự trợ giúp của học máy.
Chăm sóc sức khỏe
Một trong những ứng dụng phổ biến của Machine learning là chẩn đoán
bệnh lý, thậm chí là những căn bệnh nguy hiểm. Giải pháp này cũng được sử dụng
trong quá trình xạ trị cho các bệnh nhân ung thư.
Machine learning xuất hiện trong lĩnh vực y học, bào chế thuốc. Những dự
đoán dựa trên học máy giúp các thử nghiệm lâm sàng hiệu quả hơn. Ngoài ra,
Machine learning có khả năng đưa ra các dự đoán bùng phát. Nhiều nhà khoa học
trên thế giới đang sử dụng công nghệ này để dự đoán sự bùng phát dịch bệnh.
Qua bài viết trên, bạn có thể thấy không phải ngẫu nhiên mà Machine
learning lại nhận được sự quan tâm trong những năm gần đây như vậy. Giải pháp
công nghệ này mang lại những tính năng tuyệt vời, hỗ trợ con người bước đến một
tương lai hiện đại và tiến bộ hơn.
6. Những câu hỏi thường gặp về machine learning
6.1. Machine learning được dùng để làm gì?
Machine learning góp mặt trong cuộc sống hằng ngày của con người. Một số
lĩnh vực đã ứng dụng học máy như:
– Trợ lý ảo
– Đưa ra những dự đoán về lưu lượng truy cập
– Phát hiện gian lận trực tuyến
– Lọc thư rác
– Đề xuất sản phẩm
– Phương tiện không người lái
6.2. Các bước hoạt động của machine learning là gì?
Thông thường, công nghệ học máy bao gồm ba bước hoạt động: đào tạo, xác
thực và kiểm tra. Trong đó, giai đoạn kiểm tra liên quan đến việc quản lý tiếng ồn
và kiểm tra các thông số. Đây chính là ba bước hoạt động cơ bản của phương pháp
học máy.
6.3. Machine learning phù hợp với ngôn ngữ nào?
Ngôn ngữ lập trình tốt nhất đối với công nghệ hiện đại machine learning là:
JavaScript, Python, Julia, R, Java. Trong đó, Python chính là ngôn ngữ lập trình
được sử dụng phổ biến nhất khi thiết lập giải pháp học máy. Lượng người dùng sử
dụng ngôn ngữ này ngày càng tăng.
CH NG II: MÔ HÌNH ƯƠ NH N D NG KHUÔN M T BẰẰNG THU T
TOÁN PCA & SVM.
Trong bài này, chúng ta sẽ học cách sử dụng Máy Véc tơ hỗ trợ phân
tích thành phần chính để xây dựng mô hình nhận dạng khuôn mặt.
Trước tiên, hãy để chúng ta hiểu là gì:PCA SVM
Phân tích thành phần chính:
Phân tích thành phần chính (PCA) là một thuật toán học máy được sử
dụng rộng rãi trong phân tích dữ liệu khám phá và để tạo mô hình dự đoán. Nó
thường được sử dụng để bằng cách chiếu mỗi điểm dữ liệu lên giảm kích thước
chỉ một vài thành phần chính đầu tiên để thu được dữ liệu có chiều thấp hơn trong
khi vẫn giữ được càng nhiều biến thể của dữ liệu càng tốt.
PCA của một phân phối Gaussian đa biến (Hình ảnh từ Wikipedia)
Bây giờ, hãy để chúng ta hiểu thuật toán theo cách dễ hiểu hơn:
Giả sử chúng ta đang gặp vấn đề mà chúng ta đang thu thập dữ liệu. Tập dữ
liệu của chúng ta dẫn đến một số biến, nhiều tính năng, tất cả đều ảnh hưởng đến
kết quả theo các khía cạnh khác nhau. Chúng ta có thể chọn loại bỏ một số tính
năng nhất định, nhưng điều đó có nghĩa là mất thông tin và chúng ta không muốn
điều đó, phải không?
Vì vậy, một phương pháp khác để (giảm kích giảm số lượng tính năng
thước dữ liệu) là tạo ra các tính năng mới bằng cách trích xuất thông tin quan trọng
và loại bỏ những thông tin ít quan trọng nhất. Bằng cách này, thông tin của chúng
ta sẽ không bị mất và chúng ta sẽ giảm các tính năng và sẽ có ít cơ hội trang bị quá
mức cho mô hình của chúng ta.
Máy hỗ trợ vector
Hỗ trợ Vector Machine ( SVM ) là một mô hình học máy có giám sát được
sử dụng cho các bài toán phân loại hai nhóm. Sau khi cung cấp mô hình tập SVM
hợp dữ liệu đào tạo được gắn nhãn cho từng danh mục, họ có thể phân loại dữ liệu
thử nghiệm mới.
Phân loại SVM (Hình ảnh từ Wikipedia)
SVM phân loại dữ liệu dựa trên mặt phẳng tối đa hóa lề. Ranh giới quyết
định SVM là thẳng. SVM là một thuật toán thực sự tốt để phân loại hình ảnh. Kết
quả thử nghiệm cho thấy SVM đạt được độ chính xác tìm kiếm cao hơn đáng kể so
với các lược đồ sàng lọc truy vấn truyền thống chỉ sau ba đến bốn vòng phản hồi
về mức độ liên quan. Điều này cũng đúng đối với các hệ thống phân đoạn hình
ảnh, bao gồm cả những hệ thống sử dụng SVM phiên bản sửa đổi sử dụng cách
tiếp cận đặc quyền.
Nhận dạng khuôn mặt
Khuôn mặt là dữ liệu có kích thước cao bao gồm một số pixel. Dữ liệu ở độ
lớn nhiều chiều khó xử lý và không thể trực quan hóa bằng các kỹ thuật đơn giản
như phân tán cho dữ liệu 2 chiều.
Những gì chúng ta sẽ làm là sử dụng PCA để giảm kích thước cao của dữ
liệu và sau đó đưa nó vào bộ phân loại SVM để phân loại ảnh.
Hãy để chúng ta chuyển sang phân đoạn mã hóa!
Ví dụ mã sau đây được lấy từ sklearn về eigenfaces. Chúng ta sẽ đi tài liệu
qua từng bước mã để hiểu được sự phức tạp và kết quả của nó.
Nhập các thư viện và mô-đun có liên quan
Trước hết, chúng ta sẽ nhập các thư viện và mô-đun cần thiết. Một cuộc thảo
luận sâu về lý do tại sao chúng ta nhập khẩu chúng sẽ theo sau khi nhu cầu của
chúng phát sinh.
import pylab as pl
import numpy as np
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_lfw_people
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.decomposition import PCA as RandomizedPCA
from sklearn.svm import SVC
Tiếp theo, chúng ta sẽ tải dữ liệu vào đĩa và tải nó dưới dạng mảng NumPy
bằng cách sử dụng từ :fetch_lfw_people sklearn.datasets
lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
Hình ảnh có thang độ xám (giá trị pixel = 0 - 255).
Tập dữ liệu được tải trong Từ điển
Hình ảnh Numpy Arrays
Tiếp theo, chúng ta sẽ xem xét bên trong các mảng hình ảnh để tìm hình
dạng của các hình ảnh. Chúng ta sẽ sử dụng thuộc tính NumPy trả về một bộshape
giá trị với mỗi chỉ mục có số phần tử tương ứng.
H
ình ảnh Numpy Arrays
n_samples, h, w = lfw_people.images.shape
np.random.seed(42)
Chúng ta sẽ sử dụng các mảng dữ liệu trong utils.Bunch trực lfw_people
tiếp và lưu trữ nó trong X. Chúng ta sẽ sử dụng dữ liệu này trong quá trình xử lý
tiếp theo.
X = lfw_people.data
n_features = X.shape[1]
Mục tiêu & Tên mục tiêu - Nhãn
Tiếp theo, chúng ta sẽ xác định các nhãn là id của người có ảnh.
y = lfw_people.target
target_names = lfw_people.target_names
n_classes = target_names.shape[0]
đích là một mảng NumPy 1288x1 chứa các giá trị 0–6 của tên mà 1288 hình
ảnh tương ứng. Vì vậy, nếu id 0 có giá trị đích là 5, nó sẽ tham chiếu đến "Hugo
Chavez", như được mô tả trong :target_names
Do đó, là đích ở dạng số, là bất kỳ mục tiêu / nhãn nào theo têny target_names
là biến lưu trữ số lớp mà chúng ta có, trong trường hợp của chúng ta, n_classes
chúng ta có :7
1. Ariel Sharon
2. Colin Powell
3. Donald Rumsfeld
4. Ông George W. Bush
5. Gerhard Schröder
6. Hugo Chavez
7. Tony Blair
Tên đích từ Tập dữ liệu (Hình ảnh từ Wikipedia - Soure [1], [2], [3], [4], [5], [6],
[7])
print("Total dataset size:")
print("n_samples: %d", n_samples)
print("n_features: %d", n_features)
print("n_classes: %d", n_classes)
Tách thành Train / Test
Tiếp theo, chúng ta sẽ sử dụng mô-đun train_test_split từ
sklearn.model_selection và tách dữ liệu ( -features và -labels) thành dữ liệu X y
đào tạo và dữ liệu thử nghiệm, với 25% dữ liệu được sử dụng để kiểm tra và 75%
còn lại để đào tạo mô hình .
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25,
random_state=42)
X_text & X_train
y_test & y_train
Giảm kích thước bằng PCA
Bây giờ, chúng ta sẽ sử dụng từ để chọn các PCA sklearn.decomposition
thành phần hàng đầu để đào tạo mô hình. Chúng ta đã nhập PCA dưới
dạng trong khối mã đầu tiên.RandomizedPCA
Trong trường hợp của chúng ta, chúng ta có tổng cộng 966 tính năng trong
tập huấn luyện và chúng ta sẽ giảm chúng xuống còn bằng cách sử X_train 50
dụng PCA (giảm kích thước):
n_components = 50
pca = RandomizedPCA(n_components=n_components, whiten=True).fit(X_train)
Bây giờ chúng ta sẽ định hình lại các thành phần PCA của chúng ta và xác
định đó là tên được đặt cho một tập hợp các vector riêng khi được sử eigenfaces,
dụng trong bài toán computer vision của nhận dạng khuôn mặt của con người:
eigenfaces = pca.components_.reshape((n_components, h, w))
Tiếp theo, chúng ta sẽ sử dụng PCA trên cả để biến đổi X_train X_test
giảm kích thước.
X_train_pca = pca.transform(X_train)
X_test_pca = pca.transform(X_test)
Đào tạo Bộ phân loại SVM
Khi chúng ta đã hoàn thành việc giảm kích thước, bây giờ chúng ta sẽ
chuyển sang phân loại. Đầu tiên, chúng ta sẽ đào tạo mô hình Phân loại SVM.
Chúng ta sẽ sử dụng GridSearchCV, một hàm thư viện là một cách tiếp cận để
điều chỉnh siêu tham số. Nó sẽ xây dựng và đánh giá một mô hình một cách có
phương pháp cho từng tổ hợp các tham số thuật toán được chỉ định trong một lưới
và trả về công cụ ước lượng tốt nhất trong . Các tham số được clf.best_estimator
đưa ra trong :param_grid
print("Fitting the classifier to the training set")
param_grid = {
'C': [1e3, 5e3, 1e4, 5e4, 1e5],
'gamma': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.1],
}
clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)
clf = clf.fit(X_train_pca, y_train)
print("Best estimator found by grid search:")
print(clf.best_estimator_)
SVC (C = 1000, class_weight = 'balance', gamma = 0,01)
Phỏng đoán
Bây giờ chúng ta hãy dự đoán tên của mọi người trên dữ liệu thử nghiệm.
Chúng ta sẽ sử dụng bộ phân loại mà chúng ta tìm thấy từ và bộ GridSearchCV
phân loại chúng ta đã phù hợp với dữ liệu đào tạo.
print("Predicting the people names on the testing set")
y_pred = clf.predict(X_test_pca)
Sau khi dự đoán được thực hiện, chúng ta hãy in sẽ hiển Báo cáo phân loại
thị , , điểm cho mô hình. Điều này cung độ chính xác thu hồi F1 điểm hỗ trợ
cấp trực giác sâu hơn về hành vi của trình phân loại.
print(classification_report(y_test, y_pred, target_names=target_names))
print(confusion_matrix(y_test, y_pred, labels=range(n_classes)))
Âm mưu
Cuối cùng, chúng ta sẽ vẽ cả chân dung của con người cũng như các nét đặc
trưng! Chúng ta sẽ xác định 2 chức năng: để vẽ kết quả của dự đoán trên tiêu đề
một phần của tập thử nghiệm và để đánh giá dự đoán bằng cách vẽ plot_gallery
biểu đồ của chúng:
def title(y_pred, y_test, target_names, i):
pred_name = target_names[y_pred[i]].rsplit(' ', 1)[-1]
true_name = target_names[y_test[i]].rsplit(' ', 1)[-1]
return 'predicted: %s\ntrue: %s' % (pred_name, true_name)
def plot_gallery(images, titles, h, w, n_row=3, n_col=4):
"""Helper function to plot a gallery of portraits"""
plt.figure(figsize=(1.8 * n_col, 2.4 * n_row))
plt.subplots_adjust(bottom=0, left=.01, right=.99, top=.90, hspace=.35)
for i in range(n_row * n_col):
plt.subplot(n_row, n_col, i + 1)
plt.imshow(images[i].reshape((h, w)), cmap=plt.cm.gray)
plt.title(titles[i], size=12)
plt.xticks(())
plt.yticks(())
prediction_titles = [title(y_pred, y_test, target_names, i)
for i in range(y_pred.shape[0])]
plot_gallery(X_test, prediction_titles, h, w)
eigenface_titles = ["eigenface %d" % i for i in range(eigenfaces.shape[0])]
plot_gallery(eigenfaces, eigenface_titles, h, w)
plt.show()
from sklearn.metrics import accuracy_score
score = accuracy_score(y_test, y_pred)
print(score)
Phần kết luận
Trong bài viết này, chúng ta đã xây dựng mô hình nhận dạng khuôn mặt
bằng PCA và SVM. Thuật toán Phân tích Thành phần Chính được sử dụng để
giảm kích thước của dữ liệu mà chúng ta có; hình ảnh có một số giá trị pixel! sau
đó chúng ta sử dụng SVM để phân loại bằng cách tìm công cụ ước lượng tốt nhất
bằng cách điều chỉnh siêu tham số. Chúng ta đã có thể phân loại các bức chân dung
và nhận được điểm chính xác là 0,81.
| 1/32

Preview text:

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN TÊN HỌC PHẦN HỌC MÁY NÂNG CAO Đ TI:
XÂY DỰNG MÔ HÌNH NHẬN DẠNG KHUÔN MẶT BẰNG
THUẬT TOÁN PCA & SVM.
Sinh viên thực hiện : NGUYỄN CÔNG TUỆ
Giảng viên hướng dẫn : PHẠM ĐỨC HỒNG Ngành
: CÔNG NGHỆ THÔNG TIN Chuyên ngành
: CÔNG NGHỆ PHẦN MM Lớp : CNPM3 Khóa : D13
Hà Nội, tháng 2 năm 2022 PHIẾU CHẤM ĐIỂM Họ và tên giảng Chữ ký Ghi chú viên Giảng viên chấm 1: Giảng viên chấm 2: M C L C
CHƯƠNG I: MACHINE LEARNING L GÌ?..........................................................................5
1. Khái niệm machine learning..............................................................................................5
2. Lịch sử hình thành Machine learning...............................................................................6
3. Vì sao Machine learning lại quan trọng?..........................................................................7
4. Một số giải pháp của Machine learning............................................................................7

5. Ứng dụng của Machine learning.......................................................................................9
5.1. Nhận diện hình ảnh/khuôn mặt...............................................................................10
5.2. Tự động nhận diện giọng nói....................................................................................10
5.3. Lĩnh vực tài chính......................................................................................................11
5.4. Tiếp thị bán hàng.......................................................................................................11
5.5. Chăm sóc sức khỏe.....................................................................................................12

6. Những câu hỏi thường gặp về machine learning...........................................................13
6.1. Machine learning được dùng để làm gì?.................................................................13
6.2. Các bước hoạt động của machine learning là gì?...................................................13
6.3. Machine learning phù hợp với ngôn ngữ nào?.......................................................13

CHƯƠNG II: MÔ HÌNH NHẬN DẠNG KHUÔN MẶT BẰNG THUẬT TOÁN PCA &
SVM..............................................................................................................................................14
Phân tích thành phần chính:......................................................................................................15
Máy hỗ trợ vector........................................................................................................................17
Nhận dạng khuôn mặt.................................................................................................................18

Nhập các thư viện và mô-đun có liên quan...........................................................................18
Hình ảnh Numpy Arrays.........................................................................................................19
Mục tiêu & Tên mục tiêu - Nhãn............................................................................................21
Tách thành Train / Test...........................................................................................................24
Giảm kích thước bằng PCA....................................................................................................25
Đào tạo Bộ phân loại SVM......................................................................................................26
Phỏng đoán...............................................................................................................................28
Âm mưu....................................................................................................................................28

Phần kết luận................................................................................................................................31 MỞ ĐẦU
Machine learning là một chủ đề được nhắc đến rất nhiều trong thời gian trở
lại đây bên cạnh trí tuệ nhân tạo, nó được ứng dụng cực kỳ nhiều ở thời điểm hiện
tại trong hầu hết tất cả các lĩnh vực. Trong báo cáo này,chúng ta sẽ cùng tìm hiểu
xem machine learning là gì, các khái niệm cơ bản và cuối cùng là 1 ví dụ đơn giản
cho thấy vì sao nó lại được ứng dụng rộng rãi như vậy ? CH NG I: MA ƯƠ CHINE LEARNING LÀ GÌ?
1. Khái niệm machine learning
Machine learning (tạm dịch: học máy) có khởi nguồn từ lĩnh vực trí tuệ nhân
tạo (AI). Đây là giải pháp có khả năng khiến các ứng dụng, phần mềm trở nên
thông minh hơn mà không cần thực hiện bất kỳ mã hóa nào. Thông qua dữ liệu đầu
vào, Machine learning có thể dự đoán các giá trị đầu ra mới.
Nhiệm vụ của học máy là tập trung phát triển chương trình máy tính truy cập
dữ liệu và sử dụng chúng để tự học. Mục tiêu chính của hoạt động này là giúp máy
tính tự hoạt động mà không cần sự hỗ trợ của con người.
Machine learning được xem là một phần quan trọng thuộc lĩnh vực khoa học
dữ liệu. Chúng sử dụng các phương pháp thống kê, thuật toán để phân loại, dự
đoán và khám phá những thông tin quan trọng của dữ liệu. Nhờ những chuỗi thông
tin này, người dùng nhanh chóng đưa ra các quyết định trong các hoạt động kinh
doanh của mình. Vì vậy, Machine learning chính là giải pháp lý tưởng giúp doanh
nghiệp tác động đến chỉ số tăng trưởng doanh thu.
2. Lịch sử hình thành Machine learning
Machine learning là thuật ngữ được đặt bởi Arthur Samuel vào năm 1959.
Samuel là một IBMer người Mỹ kiêm nhà tiên phong trong lĩnh vực trí tuệ nhân
tạo và máy tính chơi game. Năm 1960, thuật ngữ học máy phổ biến hơn thông qua
cuốn sách của Nilsson, nội dung đề cập đến việc phân loại máy học.
Machine learning hiện đại bao gồm hai mục tiêu chính: phân loại dữ liệu thông
qua mô hình đã được phát triển và đưa ra dự đoán về kết quả trong tương lai dựa trên mô hình này.
3. Vì sao Machine learning lại quan trọng?
Machine learning mang lại cái nhìn trực quan về hành vi của khách hàng và các
mô hình hoạt động kinh doanh. Chúng giúp doanh nghiệp xác định những xu
hướng trong tương lai và đưa ra quyết định nhanh chóng hơn. Ngoài ra, Machine
learning còn hỗ trợ sự phát triển của các sản phẩm mới.
Hiện nay, các nền tảng lớn như: Google, Facebook, Uber,…, đã ứng dụng
học máy làm trọng tâm trong hoạt động chính của họ. Đối với các doanh nghiệp,
Machine learning chính là nhân tố thúc đẩy tính cạnh tranh hiệu quả.
4. Một số giải pháp của Machine learning
Machine learning là giải pháp được ứng dụng thông qua các loại thuật toán để phân
tích và dự đoán. Dựa trên những thuật toán này, Machine learning được chia làm
bốn loại: Machine learning được giám sát, Machine learning không được giám sát,
Machine learning bán giám sát và Machine learning tăng cường.
4.1. Machine learning được giám sát
Machine learning được giám sát sử dụng tập dữ liệu được gắn nhãn để phân loại
dữ liệu hoặc dự đoán kết quả chính xác nhất. Phương pháp này có thể điều chỉnh
trọng lượng khi dữ liệu mới được đưa vào mô hình cho đến khi chúng được lắp một cách thích hợp.
Giải pháp Machine learning có giám sát giúp doanh nghiệp xử lý các vấn đề
thực trên quy mô lớn, như việc phân loại thư rác trong thư mục riêng. Những thuật
toán được sử dụng trong học máy được giám sát là: mạng nơ-ron, hồi quy tuyến
tính, hồi quy logistic, máy vectơ hỗ trợ,…
4.2. Machine learning không được giám sát
Phương pháp này sử dụng các thuật toán Machine learning để phân tích các tập
dữ liệu không được gắn nhãn. Những thuật toán này có khả năng phát hiện nhóm
dữ liệu ẩn mà không cần sự hỗ trợ của con người. Đây là giải pháp lý tưởng để:
phân tích dữ liệu, phân khúc khách hàng, nhận dạng hình ảnh, chiến lược bán chéo, …
Bên cạnh đó, Machine learning không giám sát còn giảm số lượng tính năng
trong một mô hình dựa trên việc giảm kích thước. Chúng có hai cách tiếp cận phổ
biến là: phân tích thành phần chính và phân tích giá trị đơn lẻ. Một số thuật toán
khác trong phương pháp nay là: phân cụm k-mean, phân cụm xác suất, mạng nơ- ron,…
4.3. Machine learning bán giám sát
Đây là sự kết hợp hài hòa giữa học máy được giám sát và không giám sát.
Machine learning bán giám sát sử dụng các dữ liệu gắn nhãn và không gắn nhãn để
đào tạo. Phương pháp này giúp giải quyết các vấn đề không có đủ dữ liệu được gắn
nhãn để đào tạo thuật toán học máy được giám sát.
4.4. Machine learning tăng cường
Machine learning tăng cường là phương pháp học tập dựa trên sự tương tác với
môi trường. Chúng có khả năng thực hiện một mục tiêu nhất định như lái xe hoặc
chơi trò chơi với đối thủ. Phương pháp này được sử dụng để đào tạo máy tính hoàn
thành một quy trình gồm nhiều bước.
5. Ứng dụng của Machine learning
5.1. Nhận diện hình ảnh/khuôn mặt
Đây được xem là ứng dụng phổ biến nhất của Machine learning. Hiện nay, có
rất nhiều trường hợp cần sử dụng nhận diện khuôn mặt, chủ yếu phục vụ cho nhu
cầu bảo mật như: điều tra, xác định tội phạm, hỗ trợ pháp y, mở khóa điện thoại,…
5.2. Tự động nhận diện giọng nói
Tự động nhận diện giọng nói được ứng dụng để chuyển giọng nói thành văn
bản kỹ thuật số. Machine learning hỗ trợ việc xác định danh tính của người dùng
dựa trên giọng nói của họ. Ngoài ra, chúng còn giúp người dùng thực hiện các thao
tác đơn giản thông qua giọng nói.
Những mẫu giọng nói và từ vựng được đưa vào hệ thống để đào tạo mô hình
hoạt động. Hiện tại, hệ thống nhận diện giọng nói được ứng dụng trong các lĩnh vực sau: Robot công nghiệp Quốc phòng và hàng không Công nghiệp viễn thông
Công nghệ Thông tin và Điện tử Tiêu dùng
Kiểm soát an ninh, tự động hóa
5.3. Lĩnh vực tài chính
Trong lĩnh vực tài chính – ngân hàng, giải pháp học máy được ứng dụng phổ
biến. Những thuật toán Machine learning có khả năng giám sát và đánh giá hành vi
của người dùng. Việc này giúp quá trình phát hiện vấn đề gian lận hoặc không
minh bạch dễ dàng hơn. Bên cạnh đó, người ta còn ứng dụng học máy để kiểm tra
hoạt động rửa tiền phi pháp.
Thông qua sự hỗ trợ của thuật toán, học máy giúp đưa ra quyết định giao dịch
tốt hơn bằng cách phân tích hàng nghìn dữ liệu cùng lúc. Ngoài ra, giải pháp này
rất hiệu quả trong việc tính điểm tín dụng và bảo lãnh phát hành.
5.4. Tiếp thị bán hàng
Machine learning sở hữu các thuật toán xác định khách hàng tiềm năng dựa
trên: lượt truy cập trang web, lượt nhấp chuột, lượt tải xuống, email đã mở,…
Thông qua dữ liệu thu thập được, doanh nghiệp sẽ định hình được các chiến lược
tiếp thị hiệu quả hơn.
Không những thế, học máy còn hỗ trợ việc phân tích cảm xúc của người tiêu
dùng để đánh giá phản ứng của họ đối với sản phẩm. Ngoài ra, chatbots cũng ngày
càng được cải tiến khi có sự trợ giúp của học máy. Chăm sóc sức khỏe
Một trong những ứng dụng phổ biến của Machine learning là chẩn đoán
bệnh lý, thậm chí là những căn bệnh nguy hiểm. Giải pháp này cũng được sử dụng
trong quá trình xạ trị cho các bệnh nhân ung thư.
Machine learning xuất hiện trong lĩnh vực y học, bào chế thuốc. Những dự
đoán dựa trên học máy giúp các thử nghiệm lâm sàng hiệu quả hơn. Ngoài ra,
Machine learning có khả năng đưa ra các dự đoán bùng phát. Nhiều nhà khoa học
trên thế giới đang sử dụng công nghệ này để dự đoán sự bùng phát dịch bệnh.
Qua bài viết trên, bạn có thể thấy không phải ngẫu nhiên mà Machine
learning lại nhận được sự quan tâm trong những năm gần đây như vậy. Giải pháp
công nghệ này mang lại những tính năng tuyệt vời, hỗ trợ con người bước đến một
tương lai hiện đại và tiến bộ hơn.
6. Những câu hỏi thường gặp về machine learning
6.1. Machine learning được dùng để làm gì?
Machine learning góp mặt trong cuộc sống hằng ngày của con người. Một số
lĩnh vực đã ứng dụng học máy như: – Trợ lý ảo
– Đưa ra những dự đoán về lưu lượng truy cập
– Phát hiện gian lận trực tuyến – Lọc thư rác – Đề xuất sản phẩm
– Phương tiện không người lái
6.2. Các bước hoạt động của machine learning là gì?
Thông thường, công nghệ học máy bao gồm ba bước hoạt động: đào tạo, xác
thực và kiểm tra. Trong đó, giai đoạn kiểm tra liên quan đến việc quản lý tiếng ồn
và kiểm tra các thông số. Đây chính là ba bước hoạt động cơ bản của phương pháp học máy.
6.3. Machine learning phù hợp với ngôn ngữ nào?
Ngôn ngữ lập trình tốt nhất đối với công nghệ hiện đại machine learning là:
JavaScript, Python, Julia, R, Java. Trong đó, Python chính là ngôn ngữ lập trình
được sử dụng phổ biến nhất khi thiết lập giải pháp học máy. Lượng người dùng sử
dụng ngôn ngữ này ngày càng tăng. CH NG II: MÔ HÌNH ƯƠ NH N Ậ D NG Ạ KHUÔN M T BẰ ẰNG THU T TOÁN PCA & SVM.
Trong bài này, chúng ta sẽ học cách sử dụng Máy Véc tơ hỗ trợphân
tích thành phần chính để xây dựng mô hình nhận dạng khuôn mặt.
Trước tiên, hãy để chúng ta hiểu PCASVM là gì:
Phân tích thành phần chính:
Phân tích thành phần chính (PCA) là một thuật toán học máy được sử
dụng rộng rãi trong phân tích dữ liệu khám phá và để tạo mô hình dự đoán. Nó
thường được sử dụng để giảm kích thước bằng cách chiếu mỗi điểm dữ liệu lên
chỉ một vài thành phần chính đầu tiên để thu được dữ liệu có chiều thấp hơn trong
khi vẫn giữ được càng nhiều biến thể của dữ liệu càng tốt.
PCA của một phân phối Gaussian đa biến (Hình ảnh từ Wikipedia)
Bây giờ, hãy để chúng ta hiểu thuật toán theo cách dễ hiểu hơn:
Giả sử chúng ta đang gặp vấn đề mà chúng ta đang thu thập dữ liệu. Tập dữ
liệu của chúng ta dẫn đến một số biến, nhiều tính năng, tất cả đều ảnh hưởng đến
kết quả theo các khía cạnh khác nhau. Chúng ta có thể chọn loại bỏ một số tính
năng nhất định, nhưng điều đó có nghĩa là mất thông tin và chúng ta không muốn điều đó, phải không?
Vì vậy, một phương pháp khác để giảm số lượng tính năng (giảm kích
thước dữ liệu) là tạo ra các tính năng mới bằng cách trích xuất thông tin quan trọng
và loại bỏ những thông tin ít quan trọng nhất. Bằng cách này, thông tin của chúng
ta sẽ không bị mất và chúng ta sẽ giảm các tính năng và sẽ có ít cơ hội trang bị quá
mức cho mô hình của chúng ta. Máy hỗ trợ vector
Hỗ trợ Vector Machine ( SVM ) là một mô hình học máy có giám sát được
sử dụng cho các bài toán phân loại hai nhóm. Sau khi cung cấp mô hình SVM tập
hợp dữ liệu đào tạo được gắn nhãn cho từng danh mục, họ có thể phân loại dữ liệu thử nghiệm mới.
Phân loại SVM (Hình ảnh từ Wikipedia)
SVM phân loại dữ liệu dựa trên mặt phẳng tối đa hóa lề. Ranh giới quyết
định SVM là thẳng. SVM là một thuật toán thực sự tốt để phân loại hình ảnh. Kết
quả thử nghiệm cho thấy SVM đạt được độ chính xác tìm kiếm cao hơn đáng kể so
với các lược đồ sàng lọc truy vấn truyền thống chỉ sau ba đến bốn vòng phản hồi
về mức độ liên quan. Điều này cũng đúng đối với các hệ thống phân đoạn hình
ảnh, bao gồm cả những hệ thống sử dụng SVM phiên bản sửa đổi sử dụng cách tiếp cận đặc quyền.
Nhận dạng khuôn mặt
Khuôn mặt là dữ liệu có kích thước cao bao gồm một số pixel. Dữ liệu ở độ
lớn nhiều chiều khó xử lý và không thể trực quan hóa bằng các kỹ thuật đơn giản
như phân tán cho dữ liệu 2 chiều.
Những gì chúng ta sẽ làm là sử dụng PCA để giảm kích thước cao của dữ
liệu và sau đó đưa nó vào bộ phân loại SVM để phân loại ảnh.
Hãy để chúng ta chuyển sang phân đoạn mã hóa!
Ví dụ mã sau đây được lấy từ tài liệu sklearn về eigenfaces. Chúng ta sẽ đi
qua từng bước mã để hiểu được sự phức tạp và kết quả của nó.
Nhập các thư viện và mô-đun có liên quan
Trước hết, chúng ta sẽ nhập các thư viện và mô-đun cần thiết. Một cuộc thảo
luận sâu về lý do tại sao chúng ta nhập khẩu chúng sẽ theo sau khi nhu cầu của chúng phát sinh. import pylab as pl import numpy as np
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_lfw_people
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.decomposition import PCA as RandomizedPCA from sklearn.svm import SVC
Tiếp theo, chúng ta sẽ tải dữ liệu vào đĩa và tải nó dưới dạng mảng NumPy bằng cách sử dụng từ fetch_lfw_people : sklearn.datasets
lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
Hình ảnh có thang độ xám (giá trị pixel = 0 - 255).
Tập dữ liệu được tải trong Từ điển Hình ảnh Numpy Arrays
Tiếp theo, chúng ta sẽ xem xét bên trong các mảng hình ảnh để tìm hình
dạng của các hình ảnh. Chúng ta sẽ sử dụng thuộc tính NumPy shape trả về một bộ
giá trị với mỗi chỉ mục có số phần tử tương ứng. H ình ảnh Numpy Arrays
n_samples, h, w = lfw_people.images.shape np.random.seed(42)
Chúng ta sẽ sử dụng các mảng dữ liệu trong lfw_people utils.Bunch trực
tiếp và lưu trữ nó trong X. Chúng ta sẽ sử dụng dữ liệu này trong quá trình xử lý tiếp theo. X = lfw_people.data n_features = X.shape[1]
Mục tiêu & Tên mục tiêu - Nhãn
Tiếp theo, chúng ta sẽ xác định các nhãn là id của người có ảnh. y = lfw_people.target
target_names = lfw_people.target_names
n_classes = target_names.shape[0]
đích là một mảng NumPy 1288x1 chứa các giá trị 0–6 của tên mà 1288 hình
ảnh tương ứng. Vì vậy, nếu id 0 có giá trị đích là 5, nó sẽ tham chiếu đến "Hugo
Chavez", như được mô tả trong target_names :
Do đó, y là đích ở dạng số, target_names là bất kỳ mục tiêu / nhãn nào theo tên
n_classes là biến lưu trữ số lớp mà chúng ta có, trong trường hợp của chúng ta, chúng ta có 7 : 1. Ariel Sharon 2. Colin Powell 3. Donald Rumsfeld 4. Ông George W. Bush 5. Gerhard Schröder 6. Hugo Chavez 7. Tony Blair
Tên đích từ Tập dữ liệu (Hình ảnh từ Wikipedia - Soure [1], [2], [3], [4], [5], [6], [7]) print("Total dataset size:")
print("n_samples: %d", n_samples)
print("n_features: %d", n_features)
print("n_classes: %d", n_classes)
Tách thành Train / Test
Tiếp theo, chúng ta sẽ sử dụng mô-đun train_test_split từ
sklearn.model_selection và tách dữ liệu ( X -features và -labels) thành dữ liệu y
đào tạo và dữ liệu thử nghiệm, với 25% dữ liệu được sử dụng để kiểm tra và 75%
còn lại để đào tạo mô hình .
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42) X_text & X_train y_test & y_train
Giảm kích thước bằng PCA
Bây giờ, chúng ta sẽ sử dụng PCA từ sklearn.decomposition để chọn các
thành phần hàng đầu để đào tạo mô hình. Chúng ta đã nhập PCA dưới
dạng RandomizedPCA trong khối mã đầu tiên.
Trong trường hợp của chúng ta, chúng ta có tổng cộng 966 tính năng trong
tập huấn luyện X_train và chúng ta sẽ giảm chúng xuống còn bằng cách sử 50
dụng PCA (giảm kích thước): n_components = 50
pca = RandomizedPCA(n_components=n_components, whiten=True).fit(X_train)
Bây giờ chúng ta sẽ định hình lại các thành phần PCA của chúng ta và xác
định eigenfaces, đó là tên được đặt cho một tập hợp các vector riêng khi được sử
dụng trong bài toán computer vision của nhận dạng khuôn mặt của con người:
eigenfaces = pca.components_.reshape((n_components, h, w))
Tiếp theo, chúng ta sẽ sử dụng biến đổi PCA trên cả X_trainX_test để giảm kích thước.
X_train_pca = pca.transform(X_train)
X_test_pca = pca.transform(X_test)
Đào tạo Bộ phân loại SVM
Khi chúng ta đã hoàn thành việc giảm kích thước, bây giờ chúng ta sẽ
chuyển sang phân loại. Đầu tiên, chúng ta sẽ đào tạo mô hình Phân loại SVM.
Chúng ta sẽ sử dụng GridSearchCV, một hàm thư viện là một cách tiếp cận để
điều chỉnh siêu tham số. Nó sẽ xây dựng và đánh giá một mô hình một cách có
phương pháp cho từng tổ hợp các tham số thuật toán được chỉ định trong một lưới
và trả về công cụ ước lượng tốt nhất trong clf.best_estimator . Các tham số được
đưa ra trong param_grid :
print("Fitting the classifier to the training set") param_grid = {
'C': [1e3, 5e3, 1e4, 5e4, 1e5],
'gamma': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.1], }
clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)
clf = clf.fit(X_train_pca, y_train)
print("Best estimator found by grid search:") print(clf.best_estimator_)
SVC (C = 1000, class_weight = 'balance', gamma = 0,01) Phỏng đoán
Bây giờ chúng ta hãy dự đoán tên của mọi người trên dữ liệu thử nghiệm.
Chúng ta sẽ sử dụng bộ phân loại mà chúng ta tìm thấy từ GridSearchCV và bộ
phân loại chúng ta đã phù hợp với dữ liệu đào tạo.
print("Predicting the people names on the testing set")
y_pred = clf.predict(X_test_pca)
Sau khi dự đoán được thực hiện, chúng ta hãy in Báo cáo phân loại sẽ hiển
thị độ chính xác , , điểm thu hồi
F1điểm hỗ trợ cho mô hình. Điều này cung
cấp trực giác sâu hơn về hành vi của trình phân loại.
print(classification_report(y_test, y_pred, target_names=target_names))
print(confusion_matrix(y_test, y_pred, labels=range(n_classes))) Âm mưu
Cuối cùng, chúng ta sẽ vẽ cả chân dung của con người cũng như các nét đặc
trưng! Chúng ta sẽ xác định 2 chức năng: tiêu đề để vẽ kết quả của dự đoán trên
một phần của tập thử nghiệm và plot_gallery để đánh giá dự đoán bằng cách vẽ biểu đồ của chúng:
def title(y_pred, y_test, target_names, i):
pred_name = target_names[y_pred[i]].rsplit(' ', 1)[-1]
true_name = target_names[y_test[i]].rsplit(' ', 1)[-1]
return 'predicted: %s\ntrue: %s' % (pred_name, true_name)
def plot_gallery(images, titles, h, w, n_row=3, n_col=4):
"""Helper function to plot a gallery of portraits"""
plt.figure(figsize=(1.8 * n_col, 2.4 * n_row))
plt.subplots_adjust(bottom=0, left=.01, right=.99, top=.90, hspace=.35)
for i in range(n_row * n_col):
plt.subplot(n_row, n_col, i + 1)
plt.imshow(images[i].reshape((h, w)), cmap=plt.cm.gray) plt.title(titles[i], size=12) plt.xticks(()) plt.yticks(())
prediction_titles = [title(y_pred, y_test, target_names, i)
for i in range(y_pred.shape[0])]
plot_gallery(X_test, prediction_titles, h, w)
eigenface_titles = ["eigenface %d" % i for i in range(eigenfaces.shape[0])]
plot_gallery(eigenfaces, eigenface_titles, h, w) plt.show()
from sklearn.metrics import accuracy_score
score = accuracy_score(y_test, y_pred) print(score) Phần kết luận
Trong bài viết này, chúng ta đã xây dựng mô hình nhận dạng khuôn mặt
bằng PCA và SVM. Thuật toán Phân tích Thành phần Chính được sử dụng để
giảm kích thước của dữ liệu mà chúng ta có; hình ảnh có một số giá trị pixel! sau
đó chúng ta sử dụng SVM để phân loại bằng cách tìm công cụ ước lượng tốt nhất
bằng cách điều chỉnh siêu tham số. Chúng ta đã có thể phân loại các bức chân dung
và nhận được điểm chính xác là 0,81.