使用matlab中PCA包进行训练集与测试集处理
使用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包进行训练集与测试集处理相关推荐
- matlab中使用libsvm工具箱训练的svm分类器model保存
参考自:https://blog.csdn.net/icestone007/article/details/6804150 最近自己做的项目因为用到SVM分类,使用的是matlab中使用libsvm工 ...
- R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置
R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录
- Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例
Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录
- 机器学习中的训练集,验证集及测试集的关系
机器学习中的训练集,验证集及测试集的关系 作者同类文章X 最近在看机器学习的东西发现验证集的(Validation set) 有时候被提起到,以 ...
- 第5章【思考与练习2】将数据集划分为训练集与测试集,查看决策树分类器的性能。 将例5-3中的分类器保存到文件中,然后重新加载预测给出的新数据。
P101思考与练习2 1.将数据集划分为训练集与测试集,查看决策树分类器的性能. #1. #划分为测试集与训练集 import pandas as pd data = pd.read_csv('dat ...
- 链接预测中训练集、验证集以及测试集的划分(以PyG的RandomLinkSplit为例)
目录 1. 链接预测的基本概念 2. 一些术语 3. 实例 3.1 数据集介绍 3.2 RandomLinkSplit 1. 链接预测的基本概念 在图任务中,所谓链接预测,一般有两种含义:在静态网络中 ...
- 机器学习-样本集(包括训练集及测试集)的选取
转自:http://www.xuebuyuan.com/1409669.html https://blog.csdn.net/bbbeoy/article/details/72967794 针对经验风 ...
- 【Python】深度学习中将数据按比例随机分成随机 训练集 和 测试集的python脚本
深度学习中经常将数据分成 训练集 和 测试集,参考博客,修改python脚本 randPickAITrainTestData.py . 功能:从 输入目录 中随机检出一定比例的文件或目录,移动到保存 ...
- 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 ...
最新文章
- [ZZ]Map/Reduce hadoop 细节
- Redis多机功能之复制
- 1 python基础
- 使用vs2017 作为matlab2016a b编译器 解决无法找到编译器问题【免费】
- 【华为云技术分享】opensuse使用zypper安装软件
- Android学习笔记(九)——Activity的跳转和数据传递
- sizeof()与_countof()用法
- 百度竞价初学者怎样才能建立一个好的思路
- python winio_Python pywinio包_程序模块 - PyPI - Python中文网
- java filewriter写入文件_Java中的写入字符文件类FileWriter
- 蚂蚁金服“定损宝”现身AI顶级会议NeurIPS
- 常规波束形成法matlab仿真,常规波束形成matlab程序
- 使用深度学习进行生存分析
- lol服务器位置2017,LOL甜心宝贝的琴音和弦2017抽皮肤网页地址
- 从一个程序中生成另一个程序(资源法)
- 英文名字按首字母排序分类显示
- 10019---SpringBoot简介
- android8.0 对于外置SDCARD的访问(MTK 平台)
- ES5ES6 day16
- SSL、openSSL、CA
热门文章
- 洛谷P2181 对角线(c语言)
- heic格式怎么转化jpg格式,4种方式快速处理
- Android 喜马拉雅SDK XmPlayerManager setPlayList()getPlayList()方法失效的问题出现和解决办法
- 产业分析:2022保险行业展望
- 如何在VC++下动态调整水晶报表图片的大小
- Springboot毕设项目家政服务管理系统w6nqajava+VUE+Mybatis+Maven+Mysql+sprnig)
- 实例:用C#.NET手把手教你做微信公众号开发(9)--菜单设置
- 如何使用OpenVPN搭建局域安全网
- 根据简谱的matlab演奏《未闻花名》ed
- mongodb java查询_java操作mongoDB查询的实例详解