matlab主成分分析函数princomp简介



比来看了些主成分解析,混迹Matlab论坛,翻了n多帖子,对princomp函数有了些懂得。


在此只讲一些小我懂得,并没有效术语,只求通俗。


供献率:每一维数据对于区分全部数据的供献,供献率最大的显然是主成分,第二大的是次主成分......


[coef,score,latent,t2] = princomp(x);(小我概念):


x:为要输入的n维原始数据。带入这个matlab自带函数,将会生成新的n维加工后的数据(即score)。此数据与之前的n维原始数据一一对应。


score:生成的n维加工后的数据存在score里。它是对原始数据进行的解析,进而在新的坐标系下获得的数据。他将这n维数据按供献率由大到小分列。(即在改变坐标系的景象下,又对n维数据排序)


latent:是一维列向量,每一个数据是对应score里响应维的供献率,因为数占领n维所以列向量有n个数据。由大到小分列(因为score也是按供献率由大到小分列)。


coef:是系数矩阵。经由过程cofe可以知道x是如何转换成score的。



则模型为从原始数据出发:

score= bsxfun(@minus,x,mean(x,1))*coef;(感化:可以把测试数据经由过程此办法改变为新的坐标系)

逆变换:

x= bsxfun(@plus,score*inv(coef),mean(x,1))



例子:


View Code



%%
%清屏
clear
%%
%初始化数据
a=[-14.8271317103068,-3.00108550936016,1.52090778549498,3.95534842970601;-16.2288612441648,-2.80187433749996,-0.410815700402130,1.47546694457079;-15.1242838039605,-2.59871263957451,-0.359965674446737,1.34583763509479;-15.7031424565913,-2.53005662064257,0.255003254103276,-0.179334985754377;-17.7892158910100,-3.32842422986555,0.255791146332054,1.65118282449042;-17.8126324036279,-4.09719527953407,-0.879821957489877,-0.196675865428539;-14.9958877514765,-3.90753364293621,-0.418298866141441,-0.278063876667954;-15.5246706309866,-2.08905845264568,-1.16425848541704,-1.16976057326753;];
x=a;
%%
%调用princomp函数
[coef,score,latent,t2] = princomp(x);
score
%测试score是否和score_test一样
score_test=bsxfun(@minus,x,mean(x,1))*coef;
score_test

latent=100*latent/sum(latent)%将latent总和同一为100,便于调查供献率
pareto(latent);%调用matla画图




上图是经由过程自带函数绘制,当供献率累加至95%,今后的维数会不在显示,最多只显示10维。


下面用本身编写的默示:



之前的错误熟悉:


1.认为主成分解析中latent显示的供献值是原始数据的,其实是加工后的数据的。申明:对原始数据既然选择PCA办法,那么策画机认为原始数据每维之间可能存在接洽关系,你想去掉接洽关系、降落维数。所以采取这种办法的。所以策画机并不关怀原始数据的供献值,因为你不会去用了,用的是加工后的数据(这也是为什么当把输入数据每一维的次序改变后,score、latent不受影响的原因)。


2.认为PCA解析后主动降维,不合错误。PCA后会有供献值,是输入者按照本身想要的供献值进行维数的改变,进而生成数据。(一般大师会取供献值在85%以上,请求高一点95%)。


3.PCA解析,只按照输入数据的特点进行主成分解析,与输出有几许类型,每个数据对应哪个类型无关。若是样本已经分好类型,那PCA后势必对成果的正确性有必然影响,我认为对于此类数据的PCA,就是在降维与正确性间找一个均衡点的题目,让数据即不会维数多而使运算错杂,又有较高的辨别率。




http://www.360doc.com/content/12/0402/11/9076884_200177731.shtml


  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
主成分分析Principal Component Analysis,PCA)是一种常用的数据降维和特征提取方法。在MATLAB中,可以使用princomp函数进行主成分分析模型的求解。根据引用\[3\],princomp函数的调用格式如下: \[COEFF, SCORE\] = princomp(X) \[COEFF, SCORE, latent\] = princomp(X) \[COEFF, SCORE, latent, tsquare\] = princomp(X) 其中,X是一个n行p列的样本观测值矩阵,每一行对应一个观测(样本),每一列对应一个变量。COEFF是一个p行p列的矩阵,每一列是一个主成分向量,按照重要性降序排列。SCORE是一个n行p列的矩阵,每一行是一个观测的主成分得分。latent是一个p维向量,表示每个主成分的方差解释比例。tsquare是一个n维向量,表示每个观测的Hotelling's T平方统计量。 通过调用princomp函数,可以得到主成分分析模型的主成分向量、主成分得分、方差解释比例和Hotelling's T平方统计量。根据引用\[2\],如果需要重建观测数据并求残差,可以使用pcares函数。 请注意,如果从协方差矩阵或相关系数矩阵出发求解主成分,应使用pcacov函数,此时无法重建观测数据和误差。 希望这个回答对您有帮助! #### 引用[.reference_title] - *1* [Matlab主成分分析法](https://blog.csdn.net/nanhaiyuhai/article/details/79304671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MATLAB实现主成分分析](https://blog.csdn.net/qq_44246618/article/details/123389107)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值