机器学习-主成分分析法(PCA)

1.PCA是什么

        PCA(Principal Component Analysis),中文名为主成分分析,是一种常用的数据分析方法。通过线性变换将原始数据降维,保留尽可能多的样本信息,以发现数据中的主要特征和结构。

        PCA通过协方差分析,建立高维空间到低维空间的线性映射/矩阵,将高维数据投影到低维空间,并期望在所投影的维度上数据的信息量最大,使用较少的数据维度同时保留较多的原数据点。

        PCA的主要思想是将多个变量通过线性变换选出较少的重要变量,这些重要变量被称为主成分。主成分具有无关性、正交的特点,这些向量的数量要远小于高维空间的维度。

2.如何实现PCA

        数据标准化:对原始数据进行中心化处理。将每个特征的平均值减为0,并除以其标准差,使得新的均值为0,标准差为1,这样做的目的是为了去除量纲和数量级的影响。

        协方差矩阵:用数据标准化后的数据计算协方差矩阵,协方差矩阵能够度量数据之间的相关性。

        特征值分解:对协方差矩阵进行特征值分解,找到矩阵的特征值和特征向量。

        特征值排序并选择主成分:将特征值按照从大到小的顺序排列,并选择前k个最大的特征值对应的特征向量作为主成分(k为指定的目标维度)。

        投影数据:将原始数据投影到所选的特征向量上,得到降维后的数据。

3.PCA实现简单的人脸识别

        3.1训练样本

# 加载人脸数据集  
file = r"Face\train"
all_data = load_data(file)
face_dataset = np.mat(all_data)

# 计算图像的均值和协方差矩阵,传入的是norm_fave的转置  
mean_face = np.mean(face_dataset, axis=0)   
norm_fave = face_dataset - mean_face  
cov_matrix = np.cov(norm_fave.T) 
  
# 计算协方差矩阵的特征值和特征向量    
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)    
  
# 选择主成分    
num_components = 10  # 选择前10个主成分    
eigenvectors = eigenvectors[:, -num_components:]    
  
# 投影图像到主成分空间    
projected_faces = np.dot(norm_fave, eigenvectors)

        3.2测试样本

# 将测试图像投影到主成分空间  
projected_test_image = np.dot(test_image, eigenvectors)  
# 使用KNN分类器对投影后的测试图像进行预测
predicted_label = knn.predict([projected_test_image])[0]  

4.结论

        PCA在许多领域都有广泛的应用。在人脸识别中,PCA可以用于提取人脸图像中的主要特征,以简化模型和提高识别效率。通过PCA降维,可以降低模型的复杂度、提高计算效率、增强模型的泛化能力,是一种有效的数据处理和分析方法,能够从复杂数据中提取重要的信息和特征。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值