AI-020: 练习:PCA

本文详细介绍如何使用PCA(主成分分析)算法将二维数据降维至一维,以及如何从人脸图像中提取100个主特征。通过实例演示了数据预处理、特征向量计算、数据映射及恢复的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习1:将2维数据通过PCA降为1维

过程:

  1. 原始数据归一化处理
  2. 计算协方差
  3. 计算新的特征向量
  4. 将原始数据映射到新的特征向量
  5. 反向恢复数据,对比验证

50*2数据:

  1. 原始数据归一化处理
    %  variable X in your environment
    load ('ex7data1.mat');
    
    %  Before running PCA, it is important to first normalize X
    [X_norm, mu, sigma] = featureNormalize(X);
  2. 通过PCA函数计算新的特征向量
    %  Run PCA
    [U, S] = pca(X_norm);
    function [U, S] = pca(X)
    %PCA Run principal component analysis on the dataset X
    %   [U, S, X] = pca(X) computes eigenvectors of the covariance matrix of X
    %   Returns the eigenvectors U, the eigenvalues (on diagonal) in S
    %
    
    % Useful values
    [m, n] = size(X);
    
    % You need to return the following variables correctly.
    U = zeros(n);
    S = zeros(n);
    
    cm = (1/m)*transpose(X)*X;
    [U, S, V] = svd(cm);
    
    end

  3. 将原始数据映射到新的特征向量
    %  Project the data onto K = 1 dimension
    K = 1;
    Z = projectData(X_norm, U, K);
  4. 反向恢复数据,对比验证
    X_rec  = recoverData(Z, U, K);

练习2:人脸特征提取

问题描述:原始数据为32*32的灰度人脸图片,通过PCA算法提取100个主特征

过程跟练习1是一样的,不同之处是开始是的数据预处理,这里原始数据是1024(32*32)列的灰度值,m*1024矩阵,m是图片张数;

原始数据:

原始图片:

提取100个特征后效果:

原始数据与PCA后恢复的数据对比:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记北宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值