在本文中,我们将学习使用主成分分析(PCA)和支持向量机(SVM)来建立人脸识别模型。
首先,我们来看看PCA和SVM的介绍:
主成分分析:
主成分分析(PCA)是一种机器学习算法,广泛应用于探索性数据分析和建立预测模型。它通常用于降维,方法是将每个数据点投影到前几个主成分上,以获得低维数据,同时尽可能保留数据的变化。
Matt Brems的文章(https://medium.com/u/55680478461) 全面深入地介绍了该算法。现在,让我们用更简单的术语来解释:
假设我们手头有一个问题,我们正在收集数据,而我们的数据集产生了多个变量、多个特征,它们会在不同方面影响结果。如果选择删除某些特征,又会丢失信息,而我们不希望这样,对吗?
因此,另一种减少特征数量(减少数据维数)的方法是通过提取重要信息并删除最不重要的信息来创建新的特征。这样,我们的信息就不会丢失,而特征也会减少,过拟合模型的几率也会减少。
支持向量机
支持向量机(SVM)是一种用于两组分类问题的有监督机器学习模型。在为每个类别提供一组带标签的训练数据后,它能够对新的测试数据进行分类。
支持向量机基于最大化间隔的平面对数据进行分类,它的决策边界是直的,是一种很好的图像分类算法。实验结果表明,支持向量机在经过3-4轮相关反馈后,其搜索精度明显高于传统的查询优化方案,对于图像分割系统也是如此,包括那些使用改进的支持向量机的系统。
Marco Peixeiro的文章(https://towardsdatascience.com/the-complete-guide-to-support-vector-machine-svm-f1a820d8af0b) 说明了需要一个最大间隔超平面来分类数据。读后你会更好地理解SVM!
人脸识别
人脸是由许多像素组成的高维数据。高维数据很难处理,也不能用二维数据的散点图等简单技术可视化。
我们要做的是利用PCA对数据的高维进行降维处理,然后将其输入到SVM分类器中对图像进行分类。
接下来进入编码部分!
下面的代码示例取自关于eigenfaces的sklearn文档。我们将一步一步地检查代码,以了解其复杂性和结果。
导入相关库和模块
首先导入所需的库和模块。后文将深入讨论为什么要导入它们。
import pylab as plimport numpy as npfrom matplotlib import pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import fetch_lfw_peoplefrom sklearn.model_selection import GridSearchCVfrom sklearn.metrics import classification_reportfrom sklearn.metrics import confusion_matrixfrom sklearn.decomposition import PCA as RandomizedPCAfrom sklearn.svm import SVC
将数据加载到Numpy数组中
接下