该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

PCA基本流程:

1、训练集矩阵算协方差矩阵A;

2、算协方差矩阵特征值与特征向量;

3、按特征值的大小排列特征矩阵,得B,对应的特征值(按从大到小排列)组成向量a;

4、A*B得到去关联的新矩阵C,A与C的对应位置物理意义相同(指样本维度和样本数),但是去掉了关联,并且按特征贡献度大小排列;

5、选贡献度百分比或降维后的维度。例如百分之90,则是取满足sum(a(1:n))/sum(a)>90%的最小的n;如果直接定降维后的维度,则直接设置个n。

6、任一样本的降维公式相同,对于样本x:x*B(1:n,:)。

原理说明:步骤3,4本质上是基变换原理。4可以去关联的原理与马氏距离相仿。贡献度的原理与协方差矩阵的数学意义相关。转换矩阵相关的计算必须在训练集上完成是因为协方差矩阵的计算需要一个样本集,如将测试集样本加入这个样本集,则训练集中已经包含了测试集信息(例如某一维特征的均值)。

matlab函数说明:

[COEFF, SCORE, LATENT] = pca(X);

COEFF:步骤3算出来的矩阵B,本质上是一个基变换矩阵。数学意义是协方差矩阵按特征值的大小排列的特征矩阵。

SCORE:步骤4算出来的矩阵C,与A同维同物理意义。

LATENT:步骤3算出来的向量a,存储了贡献度,数学意义是协方差矩阵特征值从大到小排列。

用途:根据LATENT计算满足某贡献度所需的样本维度,或直接定一个样本维度,然后

x*COEFF(1:n,:)降维。

把训练集中所有样本计算x*COEFF就是SCORE,当然,x*COEFF(1:n,:)这个式子更大的用途是计算测试集中的样本。

以上全是废话,这里是关键的:

pca内建函数在算协方差的时候先减了个样本均值,所以这里x*COEFF不是SCORE

需要先算

x0 = bsxfun(@minus,train_data,mean(train_data,1));

x0 = bsxfun(@minus,test_data,mean(test_data,1));

然后x0*x*COEFF才是SCORE

matlab pca 测试样本,matlab_PCA,训练集与测试集分开,原理和用法相关推荐

  1. Pytorch 分布式训练中DP和DDP的原理和用法

    一.聊聊DP和DDP pytorch中的有两种分布式训练方式 一种是常用的DataParallel(DP) 另外一种是DistributedDataParallel(DDP) 两者都可以用来实现数据并 ...

  2. matlab pca和逆pca函数,PCA的原理及MATLAB实现

    关于PCA原理可以直接参考下面的文章 深入理解PCA PCA是经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的. PCA的原理就是将原来的样本数据投影到一个新的空间 ...

  3. matlab pca和逆pca函数,matlab_PCA,训练集与测试集分开,原理和用法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 PCA基本流程: 1.训练集矩阵算协方差矩阵A; 2.算协方差矩阵特征值与特征向量; 3.按特征值的大小排列特征矩阵,得B,对应的特征值(按从大到小排列) ...

  4. matlab pca coeff,matlab_PCA,训练集与测试集分开,原理和用法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 PCA基本流程: 1.训练集矩阵算协方差矩阵A; 2.算协方差矩阵特征值与特征向量; 3.按特征值的大小排列特征矩阵,得B,对应的特征值(按从大到小排列) ...

  5. 使用matlab中PCA包进行训练集与测试集处理

    使用matlab中PCA包进行训练集与测试集处理 1. matlab中PCA包的使用与分析 2. 训练集与测试集降维处理 1. matlab中PCA包的使用与分析 [coeff, score, lat ...

  6. Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例

    Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录

  7. 机器学习-样本集(包括训练集及测试集)的选取

    转自:http://www.xuebuyuan.com/1409669.html https://blog.csdn.net/bbbeoy/article/details/72967794 针对经验风 ...

  8. ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set...

    首先三个概念存在于 有监督学习的范畴 Training set: A set of examples used for learning, which is to fit the parameters ...

  9. 一文看懂 AI 训练集、验证集、测试集(附:分割方法+交叉验证)

    2019-12-20 20:01:00 数据在人工智能技术里是非常重要的!本篇文章将详细给大家介绍3种数据集:训练集.验证集.测试集. 同时还会介绍如何更合理的讲数据划分为3种数据集.最后给大家介绍一 ...

最新文章

  1. 荣耀20搭载鸿蒙,荣耀20系列刚发布,搭载鸿蒙系统新机来袭,余承东已准备好!...
  2. android绑定java,Java-android数据绑定-找不到类android.view.data
  3. mysql的命令行安装,忘记密码,密码重置问题
  4. 关于vue-template-compiler 源码探究的资料
  5. 我的世界中国版服务器无限夜视,我的世界中国版怎么无限夜视_我的世界夜视药水怎么合成_我的世界怎么永久夜视...
  6. 测试开发之测试方法第一篇
  7. python怎么处理数据集的缺失值_python 对数据集的缺失值补全方法 sklearn.preprocessing.Imputer...
  8. iOS模拟器中修改textField键盘类型为中文输入和键盘弹出方法
  9. 一款好用的日报管理系统“拍了拍”你,手把手教你如何写日报
  10. Google GMS认证测试相关
  11. 饥荒如何修改服务器人数上限,《饥荒联机版》房间人数上限修改图文教程
  12. 美柚:女性移动APP安全攻防战
  13. 100+精选技术干货合辑(持续更新中)
  14. “宅一族”大数据报告:喜欢学习,喜欢健身,生活同样很精彩
  15. 使用Windows任务计划自动运行Python程序
  16. 苹果手机更改照片大小kb_iphone6如何用手机查看图片分辨率 大小等属性
  17. 谷歌浏览器乱码的问题
  18. 免费网络电话App 席卷移动互联网市场
  19. A4988电机驱动简单使用
  20. mbp安装steam显示“steam_osx”已损坏,mac安装steam方法

热门文章

  1. es分词器错误分析_了解ElasticSearch分析器
  2. java域对象_javaWeb域对象
  3. Java 17 将至,可能带来哪些新特性呢?
  4. 以云原生的名义,举办一次技术聚会
  5. 皮一皮:这是为什么呢???
  6. 皮一皮:一直情绪不稳的原因终于找到了!
  7. Stack Overflow 2020 开发者调查中的 21 条关键结果
  8. 何时(不)使用Java抽象类
  9. java流处理为什么快_“任何情况下,都不可以堕胎”是道德普遍主义的观点。
  10. VS2017项目打包为exe和setup