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

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 coeff,matlab_PCA,训练集与测试集分开,原理和用法相关推荐

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

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

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

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

  3. 【Python】深度学习中将数据按比例随机分成随机 训练集 和 测试集的python脚本

    深度学习中经常将数据分成 训练集 和 测试集,参考博客,修改python脚本 randPickAITrainTestData.py . 功能:从 输入目录 中随机检出一定比例的文件或目录,移动到保存 ...

  4. 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 ...

  5. R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置

    R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录

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

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

  7. python尝试不同的随机数进行数据划分、使用卡方检验依次计算不同随机数划分下训练接和测试集所有分类特征的卡方检验的p值,如果所有p值都大于0.05则训练集和测试集都具有统计显著性、数据划分合理

    python尝试不同的随机数进行数据划分.使用卡方检验依次计算不同随机数划分下训练接和测试集所有分类特征(categorical)的卡方检验的p值,如果所有p值都大于0.05则退出循环.则训练集和测试 ...

  8. Python计算医疗数据训练集、测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数、连续变量的均值(标准差)以及训练测试集阳性阴性的p值、离散变量的分类统计、比率、训练测试集阳性阴性的p值

    Python使用pandas和scipy计算医疗数据训练集.测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数.连续变量的均值(标准差࿰

  9. R语言决策树、bagging、随机森林模型在训练集以及测试集的预测结果(accuray、F1、偏差Deviance)对比分析、计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况

    R语言决策树.bagging.随机森林模型在训练集以及测试集的预测结果(accuray.F1.偏差Deviance)对比分析.计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况 ...

最新文章

  1. python 使用win32com 操作excel
  2. 使用Fork/Join框架优化归并排序
  3. why-use-getters-and-setters
  4. double处理arithmeticexception为什么不报错_为什么工业废气处理设备的价格不一样?...
  5. Lambda表达式有参数有返回值的练习(自定义接口)
  6. GPS定位系统源码二次开发就选专为二次开发而生的GPSBD...
  7. Castle ActiveRecord学习实践(2):构建配置信息
  8. android ssl http,Android SSL HTTP请求使用自签名证书和CA
  9. python银行家算法_Linux 死锁概念与银行家算法python 实现
  10. SpringBoot前端Ajax以JSON格式获取后台数据
  11. Linux(Ubuntu)使用日记------ssh远程登录腾讯云
  12. 区块链需要用到mysql吗_区块链和传统数据库有什么区别?
  13. 国庆在家写了个简易版的在线简历网站
  14. 从南极之争谈软件架构十个技巧,及…
  15. ARGB颜色与int相互转换
  16. IE不能上网浏览的常见原因和解决方法
  17. 申请加精—ERP实施方法论的比较(SAP、 Oracle、J.D.E、BANN、用友等实施方法论)...
  18. 人民币符号输入的几种方法
  19. 一文论述Web3、互操作性和元宇宙的关系
  20. #内存泄露# #valgrind# valgrind使用

热门文章

  1. unix 汇编语言 GAS
  2. 【SAS】学习笔记——索引(index)篇
  3. win下vscode无法激活conda环境
  4. android编程之悬浮窗体
  5. python+selenium的一个小蜘蛛
  6. mysql开启邮件服务_邮件服务之实现基于虚拟用户的虚拟域邮件系统
  7. vue watch中获取this.$refs.xxx节点的方法
  8. 【FPGA】EDA技术概述
  9. 开企业邮箱需要服务器么,企业邮箱一定要虚拟主机吗
  10. 线性代数005之行列式展开定理与零值定理