假如输入的训练集形状为 X1∈Rn1×mX_{1}\in R^{n_{1} \times m}X1​∈Rn1​×m
这里n1n_{1}n1​为训练集样本数,mmm为数据的原始维度。同理,测试集形状为
X2∈Rn2×mX_{2} \in R^{n_{2}\times m}X2​∈Rn2​×m
设我们需要的更加紧致的维度为kkk,则需要以下的步骤:

  1. 对训练集做均值化,这里是指在每一个维度上计算均值,然后减去均值,即
    average(X1)∈Rn1average(X_{1}) \in R^{n_{1}}average(X1​)∈Rn1​
    X1j=X1j−average(X1),j=1,2,...,n1X_{1}^{j} = X_{1}^{j}-average(X_{1}) , j=1,2,...,n_{1}X1j​=X1j​−average(X1​),j=1,2,...,n1​
  2. 求协方差矩阵 C=X1TX1/n1∈Rm×mC = X_{1}^{T}X_{1}/n_{1} \in R^{m\times m}C=X1T​X1​/n1​∈Rm×m
  3. 对 C 做特征值分解,求出最大的k的特征值,以及对应的k个特征向量。按照降序的方式,把特征向量按列排成一个矩阵P∈Rm×kP \in R^{m\times k}P∈Rm×k
  4. 对训练集和测试集分别乘上P,得到降维后的数据,即
    X1′=X1P∈Rn1×kX_{1}^{'} = X_{1}P\in R^{n{1}\times k}X1′​=X1​P∈Rn1×k
    X2′=X2P∈Rn1×kX_{2}^{'} = X_{2}P\in R^{n{1}\times k}X2′​=X2​P∈Rn1×k

谨记:只能对训练集降维,把得到的降维矩阵保留,用于对测试集的降维。这是因为,测试集对我们来说,模型生成之前都是不可知的,所以不能使用任何关于测试集的信息。

对训练集和测试集的PCA方法相关推荐

  1. sklearn.model_selection.train_test_split随机划分训练集和测试集

    1 函数用途 train_test_split()是交叉验证中常用的函数,功能是将数组或矩阵按比例随机划分为训练集和测试集,使用方法为: X_train,X_test, y_train, y_test ...

  2. 机器学习中训练集和测试集归一化(matlab版)

    转载自   https://blog.csdn.net/lkj345/article/details/50352385 背景介绍: 归一化后加快了梯度下降求最优解的速度,归一化有可能提高精度. 训练集 ...

  3. [机器学习笔记] 将数据拆分成训练集和测试集的几种方法

    问题描述: 一般情况下, 我们习惯将原始数据中的80% 作为训练集, 20% 作为测试集(当数据量足够大的时候,也可以将10% 作为测试集. 数据量较小时,如果每次都是随机划分训练集,执行多次训练后, ...

  4. 处理训练集和测试集分布同的方法(对抗训练)

    https://www.kaggle.com/c/santander-value-prediction-challenge 在kaggle该题中,需要通过所给的匿名变量来预测target值 featu ...

  5. python划分数据集用pandas_用pandas划分数据集实现训练集和测试集

    1.使用model_select子模块中的train_test_split函数进行划分 数据:使用kaggle上Titanic数据集 划分方法:随机划分 # 导入pandas模块,sklearn中mo ...

  6. 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization

    1.26.过拟合.欠拟合及其解决方案 1.26.1.过拟合.欠拟合的概念 1.26.1.1.训练误差和泛化误差 1.26.1.2.验证数据集与K-fold验证 1.26.1.3.过拟合和欠拟合 1.2 ...

  7. oxford5k和paris6k数据集介绍_sklearn函数:KFold(分割训练集和测试集)

    上一篇介绍了train_test_split函数: 橘猫吃不胖:sklearn函数:train_test_split(分割训练集和测试集)​zhuanlan.zhihu.com 主要场景是,我们想要将 ...

  8. idea2020.2中@test是怎么测试的_Sklearn 划分训练集和测试集

    [从零开始学机器学习第 03 篇] 摘要:手写 Sklearn 的 train_test_split 函数. 之前两篇文章以酒吧的红酒故事引出了 kNN 分类算法,根据已倒好的酒(样本),预测新倒的酒 ...

  9. 【自存代码】划分数据集为训练集和测试集

    [自存代码]划分image和label为训练集和测试集 修改自这位大佬的代码:https://blog.csdn.net/weixin_47414034/article/details/1254793 ...

  10. paddle静态图训练,训练集和测试集效果都有很好,但验证集上效果很差

    在paddle静态图训练中,训练集和测试集效果都有很好,但验证集上效果很差 在paddle的训练中,如果使用这样的方式进行训练 main_program = fluid.default_main_pr ...

最新文章

  1. php扩展swoole安装,php 安装swoole扩展
  2. kdir测试软件,[OK210开发板体验]入门篇(4)编程入门(NFS登录、驱动入门)
  3. find排除文件 linux_Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键...
  4. 云原生应用万节点分钟级分发协同实践
  5. ajax async
  6. 使用Visual Studio Code编写和激活ABAP代码 (上)
  7. Linux Shell高级技巧(三)
  8. linux进程作为服务,将一个监视进程做成linux系统服务
  9. Linux screen命令与后台执行任何程序
  10. 求n从1到20阶乘的和(即1+2!+3!+4!+...+20!)
  11. linux系统维护篇:centos7.9桌面环境安装百度网盘客户端(libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found)
  12. python学习总结4 - 流程控制工具
  13. Win10下VS2019 C++ opencv3.4.x 环境搭建过程 | 找不到opencv_world347d.dll | error LNK2019: 无法解析的外部符号
  14. 小杜机器人线下店_百度AI小度机器人IP营销
  15. 警告: Failed to register object [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Qia
  16. java 打印星号_JAVA打印星号
  17. server 服务器文档,服务器文档,server document,音标,读音,翻译,英文例句,英语词典...
  18. 字符串全排列算法_C#版_剑指OFFER
  19. 【c++】保留两位小数
  20. 成绩单课程翻译参考总表

热门文章

  1. 40 个免费的面向编程初学者的视频教程
  2. Presto 即席查询
  3. 聊天软件开发_0_开篇
  4. 30+的华为,也在乘风破浪
  5. 线上数据库增加字段导致服务请求超时总结
  6. SpringAOP的实现原理
  7. 短视频抖音广告投放数据分析报告, 游戏行业抖音广告投放占比最多
  8. 录入数学公式至mark down文档的方法
  9. 从0开始的技术美术之路(十)伽马校正
  10. 思维挑战6:奔跑的小人