正确使用Matlab中的PCA包

正确使用Matlab中的PCA包

[coeff, score, latent ] = pca(X);

Xn×m X n × m :n个样本,每个样本m维
coeff :特征向量,每一列表示一个特征向量。并以特征值从大到小排了序
score :新的数据表示,行表示样本,列表示样本属性。(与X一样)
latent :特征值,并以从大到小排序。可根据每个值占总数(sum(latent))的比例知道该维度的信息量多少。

例子证明

[1] load('hald','ingredients')

ingredients

[2] [coeff,score,latent] = pca(ingredients)

coeff,score,latent

说明

[1] 装载matlab中自带的一个数据集“ingredients”,该数据集表示13个样本,每个样本4个维度。
[2] 对数据“ingredients”,进行PCA处理,得到:特征向量coeff、新坐标下的数据表示score、特征值latent

验证

[3] ing = ingredients - repmat(mean(ingredients),[13,1]);
[4] cov_ing = cov( ing );
[5] [V,D] = eig( cov_ing )

V,D

[6] ing * coeff

ans

说明

[3] 在每个维度上对数据进行去均值处理,得到去均值后的ing数据
[4] 对ing数据在维度间求协方差矩阵,得到cov_ing数据
[5] 对cov_ing数据求其特征值和特征向量。仔细观察,可以发现,这个和[2]中得到的coeff和latent其实是一样的,只是这里默认的是从小到大排序
[6] 对去均值后的ing数据右乘特征向量,或者换成ing * V结果是一样的。仔细观察,可以发现,这个和[2]中得到的score是一样。

SVD与PCA相差的地方就在去均值与否上面

参考

Principal component analysis of raw data - MATLAB pca - MathWorks

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值