您的位置:首页 > 编程语言 > MATLAB

主成分分析(PCA)

2016-07-10 14:35 239 查看
是一种数据降维方法。保留具有代表性的主成分,舍弃比重较小的成分。

算法步骤

预处理数据。均值标准化(零均值),特征缩放;

计算协方差矩阵;

对协方差矩阵进行特征值分解,求解特征值和特征向量;

数据降维。根据所要降低的维数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');


效果图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息