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

  • 1. matlab中PCA包的使用与分析
  • 2. 训练集与测试集降维处理

1. matlab中PCA包的使用与分析

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

其中,X∈Rn×mX \in\mathbb{R}^{n\times m}X∈Rn×m。n = #sample,m = #feature。而获取到的有:
coeff :特征向量。每一列表示一个特征向量。并按特征值从大到小排序
score :新数据。使用PCA后的数据表示,大小和X一致。
latent :特征值。从大到小排序。可根据每个值占总数(sum(latent))的比例知道该维度的信息量多少
使用案例有:

load('hald')
[coeff,score,latent] = pca(ingredients);

ingredients是一个R13×4\mathbb{R}^{13\times 4}R13×4大小的矩阵,可以获取输出:

coeff =-0.067799985695474        -0.646018286568728         0.567314540990512         0.506179559977706-0.678516235418647       -0.0199933404840994        -0.543969276583817         0.4932680921592970.0290208321062289         0.755309622491133         0.403553469172668         0.5155674184768360.730873909451461        -0.108480477171676        -0.468397518388289         0.484416225289198score =36.8218259994497         -6.87087815422737         -4.59094445762975         0.39665258271391429.607273420711           4.6108819635263         -2.24757816366394        -0.395843536696491-12.9817757197376         -4.20491318317594         0.902243082694697         -1.1261005872106123.714725720918         -6.63405255470872          1.85474200080631         -0.37856480838469-0.553191676624596         -4.46173212317869         -6.08741265232518          0.14238489604728-10.8124908333098         -3.64657117454406         0.912970791674605         -0.13496881031468-32.5881666088179          8.97984628493606         -1.60626591399659        0.081763927599948822.6063954990056          10.7259064573694          3.23653771448342         0.324334774646368-9.26258723767584          8.98537334747879       -0.0169095781021733        -0.543746175981798-3.28396932964067         -14.1572773375009          7.04651299483376         0.3405098609606079.22003111782938          12.3860807872205          3.42834287828462         0.435152769664896-25.5849085174296         -2.78169314815239        -0.386716066864491         0.446817950545606-26.9031618346776         -2.93097116504299         -2.44552263019531         0.411607156409659latent =517.79687807390667.496436048723112.4054300480810.237153265187813

自己拿这数据来试试,有

ingre = ingredients - mean(ingredients);
ingre * coeff-score

输出为

ans =-3.5527136788005e-14       1.4210854715202e-14      5.32907051820075e-15      1.66533453693773e-16-1.77635683940025e-14      9.76996261670138e-15      6.21724893790088e-15      2.77555756156289e-167.105427357601e-15                         0      2.22044604925031e-16     -1.55431223447522e-15-1.06581410364015e-14      1.06581410364015e-14      3.33066907387547e-15      5.71764857681956e-152.88657986402541e-15                         0      2.66453525910038e-15     -1.47104550762833e-155.32907051820075e-15     -1.33226762955019e-15     -1.55431223447522e-15     -1.94289029309402e-161.4210854715202e-14      -1.4210854715202e-14     -4.44089209850063e-15     -8.34055047249649e-15-1.77635683940025e-14        7.105427357601e-15      1.33226762955019e-15      1.99840144432528e-151.77635683940025e-15     -5.32907051820075e-15     -1.32532873564628e-15     -4.21884749357559e-15-4.88498130835069e-15       3.5527136788005e-15                         0      7.16093850883226e-15-8.88178419700125e-15      1.77635683940025e-15     -1.33226762955019e-15     -3.88578058618805e-161.4210854715202e-14       -7.105427357601e-15     -2.99760216648792e-15     -5.27355936696949e-151.77635683940025e-14     -8.43769498715119e-15     -1.33226762955019e-15     -3.66373598126302e-15

结果非常近似了。轻微差异可以接受。不过在查资料时有一点值得注意:

进行旋转(也就是利用映射矩阵coeff进行)后的结果i.e. score=X×coeffscore = X \times coeffscore=X×coeff.但这里有个坑
如果你使用pca时使用的是默认的中心化(i.e 不对’Centered’设置’false’),拿X×coeffX \times coeffX×coeff和score对比的时候, 记得把X中心化后再乘以coeff,之后再和score对比。同样如果pca使用的是默认值, 恢复的X=score×coeff′X= score \times coeff'X=score×coeff′ (注意转置)是中心化后的数据

这是不准确的。中心化,更确切来说是减去均值。normalize的ingredients乘上coeff差得十万八千里。不信请看关掉中心化的:

>> load('hald')
>> [coeff,score,latent] = pca(ingredients,'Centered','off');
>> ingredients*coeff-scoreans =-1.4210854715202e-14                         0        7.105427357601e-15      6.21724893790088e-15-7.105427357601e-15      2.48689957516035e-14     -8.88178419700125e-16     -5.99520433297585e-15-1.4210854715202e-14     -2.66453525910038e-14       3.5527136788005e-15      4.82947015711943e-15-1.4210854715202e-14       1.4210854715202e-14      4.44089209850063e-15      3.33066907387547e-15-7.105427357601e-15     -9.10382880192628e-15       3.5527136788005e-15       3.5527136788005e-15-1.4210854715202e-14      -3.5527136788005e-15      2.66453525910038e-15      2.99760216648792e-15-1.4210854715202e-14     -1.77635683940025e-14      1.77635683940025e-15      1.33226762955019e-15-7.105427357601e-15       3.5527136788005e-14        7.105427357601e-15      1.77635683940025e-15-2.1316282072803e-14        7.105427357601e-15       3.5527136788005e-15     -5.27355936696949e-161.4210854715202e-14        7.105427357601e-15      1.77635683940025e-15        7.105427357601e-150       2.8421709430404e-14        7.105427357601e-15                         0-1.4210854715202e-14      -1.4210854715202e-14      3.99680288865056e-15      4.96130914129367e-15-1.4210854715202e-14      -2.1316282072803e-14      1.77635683940025e-15      5.10702591327572e-15

2. 训练集与测试集降维处理

降维到d维,有

[coeff,score] = pca(Xtrain);
train_mean = mean(Xtrain);
train_pca = score(:,1:d);%key point
test_pca = (Xtest - train_mean)*coeff(:,1:d);

key point是训练集pca降维的情况;之后一句是测试集pca降维的情况。结束。

使用matlab中PCA包进行训练集与测试集处理相关推荐

  1. matlab中使用libsvm工具箱训练的svm分类器model保存

    参考自:https://blog.csdn.net/icestone007/article/details/6804150 最近自己做的项目因为用到SVM分类,使用的是matlab中使用libsvm工 ...

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

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

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

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

  4. 机器学习中的训练集,验证集及测试集的关系

     机器学习中的训练集,验证集及测试集的关系                          作者同类文章X 最近在看机器学习的东西发现验证集的(Validation set) 有时候被提起到,以 ...

  5. 第5章【思考与练习2】将数据集划分为训练集与测试集,查看决策树分类器的性能。 将例5-3中的分类器保存到文件中,然后重新加载预测给出的新数据。

    P101思考与练习2 1.将数据集划分为训练集与测试集,查看决策树分类器的性能. #1. #划分为测试集与训练集 import pandas as pd data = pd.read_csv('dat ...

  6. 链接预测中训练集、验证集以及测试集的划分(以PyG的RandomLinkSplit为例)

    目录 1. 链接预测的基本概念 2. 一些术语 3. 实例 3.1 数据集介绍 3.2 RandomLinkSplit 1. 链接预测的基本概念 在图任务中,所谓链接预测,一般有两种含义:在静态网络中 ...

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

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

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

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

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

最新文章

  1. [ZZ]Map/Reduce hadoop 细节
  2. Redis多机功能之复制
  3. 1 python基础
  4. 使用vs2017 作为matlab2016a b编译器 解决无法找到编译器问题【免费】
  5. 【华为云技术分享】opensuse使用zypper安装软件
  6. Android学习笔记(九)——Activity的跳转和数据传递
  7. sizeof()与_countof()用法
  8. 百度竞价初学者怎样才能建立一个好的思路
  9. python winio_Python pywinio包_程序模块 - PyPI - Python中文网
  10. java filewriter写入文件_Java中的写入字符文件类FileWriter
  11. 蚂蚁金服“定损宝”现身AI顶级会议NeurIPS
  12. 常规波束形成法matlab仿真,常规波束形成matlab程序
  13. 使用深度学习进行生存分析
  14. lol服务器位置2017,LOL甜心宝贝的琴音和弦2017抽皮肤网页地址
  15. 从一个程序中生成另一个程序(资源法)
  16. 英文名字按首字母排序分类显示
  17. 10019---SpringBoot简介
  18. android8.0 对于外置SDCARD的访问(MTK 平台)
  19. ES5ES6 day16
  20. SSL、openSSL、CA

热门文章

  1. 洛谷P2181 对角线(c语言)
  2. heic格式怎么转化jpg格式,4种方式快速处理
  3. Android 喜马拉雅SDK XmPlayerManager setPlayList()getPlayList()方法失效的问题出现和解决办法
  4. 产业分析:2022保险行业展望
  5. 如何在VC++下动态调整水晶报表图片的大小
  6. Springboot毕设项目家政服务管理系统w6nqajava+VUE+Mybatis+Maven+Mysql+sprnig)
  7. 实例:用C#.NET手把手教你做微信公众号开发(9)--菜单设置
  8. 如何使用OpenVPN搭建局域安全网
  9. 根据简谱的matlab演奏《未闻花名》ed
  10. mongodb java查询_java操作mongoDB查询的实例详解