Matlab-主成分分析(PCA)

是一种数据降维方法。保留具有代表性的主成分,舍弃比重较小的成分。

###算法步骤

  • 预处理数据。均值标准化(零均值),特征缩放;
  • 计算协方差矩阵;
  • 对协方差矩阵进行特征值分解,求解特征值和特征向量;
  • 数据降维。根据所要降低的维数k,提取前k个特征值所对应的主特征向量;计算各样本在主特征方向上的投影;
  • 还原近似数据。求原始数据的k维近似重构矩阵。

###matlab代码实现

clear all;
close all;
clc;
load data.mat
[m,n] = size(X);
%%step1:预处理数据。均值标准化(零均值),特征缩放;
x = X - repmat(mean(X),50,1);
s = std(x,0,1);
x = x./repmat(s,50,1);
axis([-3 3 -3 3]);
hold on
plot(x(:, 1), x(:, 2), 'bo');
%%step2:计算协方差矩阵;
sigma = (x'*x)/m;
%%step3:对协方差矩阵进行特征值分解,求解特征值和特征向量;
[U,S,V] = svd(sigma);%采用奇异值分解,可以对任意阵进行求解,而且在S的对角线上,非负且按降序排列,便于提取主成分.
%%step4:数据降维;
k = 1;
u = U(:,1:k);%提取主特征向量
dr = x*u; %投影
%%step5:还原近似数据.
x_r = dr*u';%重构
plot(x_r(:, 1), x_r(:, 2), 'ro');

###效果图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值