PCA算法和python实现
第十三章 利用PCA来简化数据
一.降维技术
当数据的特征很多的时候,我们把一个特征看做是一维的话,我们数据就有很高的维度。高维数据会带来计算困难等一系列的问题,因此我们需要进行降维。降维的好处有很多,比如:降低算法开销,让数据更加便于使用,去燥,数据更易于显示等等。
目前的降维技术主要有三种:第一种主成分分析(PCA),也就是本章介绍的内容,它只保留方差方向最大的若干个特征;第二种是因子分析,这种方法它的思想就是认为数据是由隐参数和噪声混合而成,如果我们能够找到隐参数和噪声就能够实现降维;第三种是独立成分分析(ICA),这种方法的思想是它认为数据是由若干个独立的数据源混合而成,如果我们能够找到这些数据源,就能够实现降维。
二.PCA的基本思想
PCA就是把一个高维的空间映射到一个低维的空间,这个低维的空间,让样本点的投影尽可能的分开,距离尽可能的大。要找到这样的一个低维空间,我们是通过不断的选择方差最大的方向来作为新特征维度实现的,当选择的方向的数目少于初始的特征维度,就实现了降维。
PCA算法的一般特性:
1.它的优点:降低数据的复杂度
2.它的缺点:可能用不到,会丧失一些有用的信息
3.它的使用类型:数值型数据
PCA算法实现的一般过程:
1.进行去中心化(也就是将每个数据减掉它的平均值)
2.计算XTX,也就是计算出协方差矩阵
3.计算协方差矩阵的特征向量和特征值
4.将得到的特征值进行从小到大的排列,然后选择值最大的d个特征值对应的特征向量作为新空间的方向向量
5.将数据映射到新的空间
三.PCA算法的实现
根据PC A算法的一般过程我们可以得到以下的实现方式:
首先我们需要获得数据

其次我们就能够定义PC A算法了

四.总结
PC A算法是一种进行降维的重要方法。我们在选择保留的特征的数目时,我们既可以实现设定,也可以根据得到特征值来进行选择。保留合适的特征数目对于数据非常的重要。
当前的降维方法主要有三种,一种是独立成分分析,一种是主成分分析,还有一种就是因子分析。主成分分析是一种应用比较广泛的方法。主成分分析他通过不断选择数据方差最大的方向来实现降维。
PCA算法和python实现的更多相关文章
- PCA算法和SVD
如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值.这里可以将特征值为负,特征向量旋转180度,也可看成方向不变,伸缩 ...
- 使用Apriori算法和FP-growth算法进行关联分析
系列文章:<机器学习实战>学习笔记 最近看了<机器学习实战>中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集).正如章 ...
- 用Spark学习FP Tree算法和PrefixSpan算法
在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...
- 最小生成树---Prim算法和Kruskal算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
- 经典算法和OJ网站(开发者必备-转)
一. Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序多种程序(如C.C++.Pascal)源代码,系统对源代码进行编译和执行,并通过 ...
- BM算法和Sunday快速字符串匹配算法
BM算法研究了很久了,说实话BM算法的资料还是比较少的,之前找了个资料看了,还是觉得有点生涩难懂,找了篇更好的和算法更好的,总算是把BM算法搞懂了. 1977年,Robert S.Boyer和J St ...
- 台球游戏的核心算法和AI(2)
前言: 最近研究了box2dweb, 觉得自己编写Html5版台球游戏的时机已然成熟. 这也算是圆自己的一个愿望, 一个梦想. 承接该序列的相关博文: • 台球游戏核心算法和AI(1) 同时结合htm ...
- mahout中kmeans算法和Canopy算法实现原理
本文讲一下mahout中kmeans算法和Canopy算法实现原理. 一. Kmeans是一个很经典的聚类算法,我想大家都非常熟悉.虽然算法较为简单,在实际应用中却可以有不错的效果:其算法原理也决定了 ...
- 转载:最小生成树-Prim算法和Kruskal算法
本文摘自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html 最小生成树-Prim算法和Kruskal算法 Prim算 ...
随机推荐
- Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题目录:http://blog.csdn.net/dba_huangzj ...
- linux下使用异步通知
阻塞式I/O是一直等待直到设备可以访问,非阻塞式I/O是定期轮询设备是否可以访问. 异步通知则是当设备可以访问时才主动通知应用程序,有点像设备的硬中断. 并不是所有的设备都支持异步通知,应用程序通常假 ...
- Live555 直播源 以及MediaSubsession
/* * H264DeviceSource.hh * * Created on: 2014年7月19日 * Author: zjzhang */ #ifndef H264DEVICESOURCE_HH ...
- 推荐一个优秀的c++源代码,TinyXml2
项目主页:http://grinninglizard.com/tinyxml2docs/index.html tinyxml2.h /* Original code by Lee Thomason ( ...
- android自定义listview实现header悬浮框效果
之前在使用iOS时,看到过一种分组的View,每一组都有一个Header,在上下滑动的时候,会有一个悬浮的Header,这种体验觉得很不错,请看下图: 上图中标红的1,2,3,4四张图中,当向上滑动时 ...
- libevent之eventop
在之前博文libevent之Reactor模式中,我们知道Reactor模式中一个重要的组件就是事件多路分发机制(event demultiplexer).而在libevent中,对事件多路分发机制的 ...
- 《java入门第一季》之面向对象面试题(代码块一网打尽)
<pre name="code" class="java">/* 代码块:在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同, ...
- 嵌入式C语言查表法的项目应用
嵌入式C实战项目开发技巧:如果对一个有规律的数组表进行位移操作 就像下面的这个表 之前写过上面这个标题的一篇文章,讲的是以位移的方式去遍历表中的数据,效率非常高,但是,如果要实现一个乱序的流水灯或者跑 ...
- Mongodb系列之--mongodb的启动与关闭
Mongodb的开启 默认启动: $ ./mongodb 默认数据保存路径:/data/db/ 默认端口:27017 修改默认路径: --dbpath $ ./mongdb --d ...
- mysql进阶(十六)常见问题汇总
mysql进阶(十六)常见问题汇总 MySQL视图学习: http://www.itokit.com/2011/0908/67848.html 执行删除操作时,出现如下错误提示: 出现以上问题的原因是 ...