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))

下面通过一个例子来说明:

%%

%清屏

clear

%%

%初始化数据

a=[-14.[1**********]68,-3.[1**********]016,1.[1**********]498,3.[1**********]601;-16.[1**********]48,-2.[1**********]996,-0.[**************],1.[1**********]079;-15.[1**********]05,-2.[1**********]451,-0.[**************],1.[1**********]479;-15.[1**********]13,-2.[1**********]257,0.[**************],-0.[**************];-17.[1**********]00,-3.[1**********]555,0.[**************],1.[1**********]042;-17.[1**********]79,-4.[1**********]407,-0.[**************],-0.[**************];-14.[1**********]65,-3.[1**********]621,-0.[**************],-0.[**************];-15.[1**********]66,-2.[1**********]568,-1.[1**********]704,-1.[1**********]753;];

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,就是在降维与准确性间找一个平衡点的问题,让数据即不会维数多而使运算复杂,又有较高的分辨率。

matlab 自带pca函数,matlab实现主成分分析 princomp函数 PCA中有这个函数相关推荐

  1. cameraman matlab 自带图,使用Matlab自带工具进行深度学习——训练图片数据集

    拿到项目,训练数据集是一个复杂的事情,虽然看起来很难不太可能短时间学会,但是事情总要做... 一步一个脚印来吧,慢慢更新进度,恩. 使用matlab执行代码(我软工项目的代码,没有代码可以直接跳过,学 ...

  2. matlab自带拉格朗日插值,MATLAB实现拉格朗日插值

    <MATLAB实现拉格朗日插值>由会员分享,可在线阅读,更多相关<MATLAB实现拉格朗日插值(14页珍藏版)>请在人人文库网上搜索. 1.实用标准文档文案大全数值分析上机报告 ...

  3. matlab 数据降维和重构_核主成分分析(Kernel PCA, KPCA)的MATLAB 实现

    前言 核主成分分析 (KPCA) 是一种非线性数据处理方法,其核心思想是通过一个非线性映射把原始空间的数据投影到高维特征空间, 然后在高维特征空间中进行基于主成分分析 (PCA) 的数据处理.KPCA ...

  4. matlab自带的音乐,MATLAB乐器(如何用matlab演奏音乐)

    近期在家无聊,刷B站视频的时候发现有up上传了matlab制作的音乐,效果很是有趣.顺带吐槽一下,手机端的B站总是推荐莫名其妙的内容,但是通过搜索关键词,你又总能搜到不错的视频,我试了几个教学课程,视 ...

  5. matlab解带约束线性方程,Matlab求解带有约束条件的线性方程组

    研究了一会solve函数,发现Matlab对于带有约束条件的线性方程组可以用solve函数解答. 关于solve函数的全部用法,可以参考博客https://blog.csdn.net/ldj1208/ ...

  6. matlab自带python_在matlab中直接在python中使用sklearn

    请不要将此标记为how to call python and sklearn from matlab?的副本,因为我认为这个问题没有真正回答. 我认为,由于Matlab发布了R2014b,所以dire ...

  7. matlab自带电机案例,MATLAB电机仿真精华50例,源代码

    [实例简介] MATLAB电机仿真精华50例,源代码,MATLAB电机仿真精华50例,源代码,包括直流电机,异步电机,同步电机. [实例截图] [核心代码] MATLAB电机仿真精华50例,源代码 └ ...

  8. matlab自带的traffic,Matlab Traffic ToolBox

    Matlab Traffic ToolBox 所属分类:数值算法/人工智能 开发工具:matlab 文件大小:2880KB 下载次数:2 上传日期:2020-03-13 00:58:43 上 传 者: ...

  9. matlab自带数据集使用,Matlab中的示例数据集

    示例数据位于../toolbox/matlab/demos中的.mat文件中. 以下数据可在matlab 2014a中找到: % in matlab run: > H=what('demos') ...

  10. matlab自带滤波器,数字滤波 - MATLAB Simulink - MathWorks 中国

    使用命令行函数或交互式 App 设计和实现滤波器. Eliminate the phase distortion introduced by an IIR filter. 使用索引来抵消滤波引入的时移 ...

最新文章

  1. 开发者的福利,报名即可领取代金券,赢运动手环
  2. rtthread pwm设备控制led小灯亮度
  3. tcpdump命令速查
  4. centos overlay 占用很大_盘锦技术好的升降货梯占用空间小
  5. Vmware VirtualCenter Server服务无法自动启动
  6. 代码中如何让无序标记的内容并排_英语技术文档中如何正确使用无序列表和有序列表?...
  7. IT计算机实习:JAVA实习报告范文(三)
  8. 杰理之ANC降噪基本原理【篇】
  9. mysql过程的写法_mysql存储过程的具体写法
  10. latex中页眉怎么去掉_latex 去掉页眉
  11. 2018.12.26 Jquery 使用 slideBox 实现滚动 效果
  12. Java-通过IP地址获得域名和主机名
  13. songshu-video-uniapp-YYC松鼠短视频前端源码-开源--优雅草科技官方发布
  14. Surface电池寿命延长
  15. 数千 npm 账号使用域名过期的邮箱,涉及 8494 个包
  16. Android重写ImageView实现图片镜像效果
  17. 反驳项立刚,运营商业绩增长就是因为5G商用向用户多收30多元
  18. 建立合格的跨职能团队,你需要知道这些
  19. PyQt5 常用窗口总结
  20. 任意输入一个正整数m和m个字符串,统计每行字符串中元音字母的个数。要求使用函数vowel()来判断是否为元音,其余功能在main()函数中实现。

热门文章

  1. Android-LayoutInflater
  2. The Nighth Assignment
  3. linux 上 Mysql 快速链接 去掉DNS解析
  4. ios 读取各种类型文件
  5. [置顶] 基于tlplayer的ios应用《虎跃在线课堂-英语篇》上线了
  6. shell 免杀aspx_对于asp免杀webshell的一些总结
  7. redis做分布式id
  8. 透过IL看C# (1)——switch语句(上)
  9. 跟我一起学Angular2(1)-了解ng模块化
  10. SHELL编写NGINX自动部署脚本