因为样本个数和特征维度的是不相等de,所以组成的矩阵不是方阵。

第一种方式:特征分解思路(特征值分解要求分解的矩阵是方阵)

基于样本特征维度,先求协方差矩阵---->再特征分解(因为协方差矩阵是方阵,所以可以使用特征分解的思路)

第二种方式:SVD分解(SVD分解不要求矩阵是方阵)

SVD理论:https://blog.csdn.net/m0_37957160/article/details/107082668

任何矩阵都可以进行SVD分解。

事实上在数据量很大时,求协方差矩阵,然后在进行特征分解是一个很慢的过程,因此在PCA背后的实现也是借助奇异值分解来做的,在这里我们只要求得奇异值分解中的左奇异向量或右奇异向量中的一个(具体求哪个是要根据你的X向量的书写方式的,即行数是样本数还是特征数,总之左奇异向量是用来压缩行数,右奇异向量是用来压缩列数,而我们的目的是要压缩特征数)

PS:使用PCA算法不管利用哪种分解方式,一定是对样本的协方差矩阵进行分解,因为只有协方差矩阵才能反应特征维度之间的关系。

------------------------------------------从特征值特征向量到矩阵SVD奇异值分解np.linalg.svd()函数

下边是借助Numpy的SVD分解实现:

PCA(2):PCA算法实现的两种方式相关推荐

  1. ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)

    ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式) 目录 基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两 ...

  2. 水平集方法引入主动轮廓模型算法中的两种方法

    水平集方法引入主动轮廓模型算法中的两种方法 1.传统的基于主动轮廓模型和水平集理论的方法 2.变分水平集方法 在讲解水平集理论在主动轮廓模型中的应用前,我们先用流程图说明一下常见的处理主动轮廓模型的流 ...

  3. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式

    从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...

  4. linux的进程与库之间的通信两种方式

    文章目录 前言 一.进程A与算法库b的通信方式之一:动态dlopen加载算法库b,编译的时候是需要加载该头文件就可以,无需连接该算法库b 具体的实施细节: 二.进程A与算法库b的通信方式之二:进程A编 ...

  5. python repair修复功能_详解Python修复遥感影像条带的两种方式

    GDAL修复Landsat ETM+影像条带 Landsat7 ETM+卫星影像由于卫星传感器故障,导致此后获取的影像出现了条带.如下图所示, 影像中均匀的布满条带. 使用GDAL修复影像条带的代码如 ...

  6. php 递归实现无限极分类和排序_无限极分类的两种方式,递归和引用

    说到无限极分类,比较常见的做法是在建表的时候,增加一个parnet_id字段用来区别自己所属的分类(是顶级分类还是子分类) 由于展示数据的时候,需要表达出这种所属关系,所以必然要在读取数据的时候进行一 ...

  7. Rust创建项目的两种方式

    Time: 20190919 这两种方式分别是: 手动创建项目,用rustc编译 使用包管理器cargo 手动创建 在文件夹内添加main.rs,代码内容如下: fn main() {println! ...

  8. linux中安shell怎么传入参数,【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】...

    方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...

  9. 如何让BERT拥有视觉感知能力?两种方式将视频信息注入BERT

    一只小狐狸带你解锁NLP/ML/DL秘籍 老板老板,听说BERT是个瞎子 此话怎讲? 它能理解语言,但是理解不了小夕的自拍! video-BERT了解一下 喵喵喵? AI的三大核心板块(CV/Spee ...

最新文章

  1. How to Use tomcat on Linux
  2. android8.1状态栏图标,Android 8.1 去掉 Launcher3 默认给 icon 增加的白边
  3. Android的AlertDialog详解
  4. 使用 Node.js Express 的最佳实践
  5. 省市级联基于jquery+json(转)
  6. 拥抱.NET Core系列:MemoryCache 缓存域
  7. java 超构造函数_java中的超级构造函数
  8. iOS 播放Gif动画
  9. 图论及其应用 2018年期末考试 答案总结
  10. shell编程三大神器之awk
  11. GitHub入门:教你如何查找GitHub中最热项目/最牛大神的方法
  12. windows server 2016 安装openssh
  13. 极兔崛起,顺丰受伤,低端快递市场不好玩
  14. 大华摄像头视频接入(一)
  15. Android USB串口打印结账单小票
  16. C#中.snk文件的作用
  17. 六款在线项目管理工具
  18. js的join()与 split()
  19. 什么是通信原理?原来这么简单
  20. 亚马逊开店如何优化店铺?

热门文章

  1. MyBatis if标签的用法
  2. Codeforces.1051F.The Shortest Statement(最短路Dijkstra)
  3. [认证授权] 6.Permission Based Access Control
  4. k8s系列----一个简单的例子
  5. like模糊查询是否走索引
  6. 2022-2028年中国液体燃料行业市场研究及前瞻分析报告
  7. PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)
  8. SpringMVC工作环境搭建 配置文件
  9. 基础设计模式:单例模式+工厂模式+注册树模式
  10. 谷歌Chrome浏览器发布