精华内容
下载资源
问答
  • 以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、...
  • 从一个简单的例子说起,相信大多数人学过线性代数或者矩阵论之类的课程吧,再线性代数中,最初始的时候就会学到关于如何判断一大堆向量线性的相关或者不相关性,进而确定一线性无关。这里比如说空间中一个向量X...

    工程数据特征的稀疏性

    从一个简单的例子说起,相信大多数人学过线性代数或者矩阵论之类的课程吧,再线性代数中,最初始的时候就会学到关于如何判断一大堆向量线性的相关或者不相关性,进而确定一组线性无关组。这里比如说空间中一个向量X是一个三维坐标点吧,用(x,y,z)表示。假设现在有一堆点X1(1,0,0);X2(0,1,0);X3(0,0,1);X4(4,3,5);X5(2,1,4)……等等吧,那么我们是不是可以找到这一大堆向量的最大线性无关组其实就可以用X1,X2,X3来表示,其他的任何向量Xi都可以用这三个向量来线性表示,当然用X1,X2,X3来表示任何一个向量来表示是最简单情况,你一个向量同样可以用X1,X2,X3,X4,X5来表示,不过这个多两个待确定系数而已。好了现在假设我们已知有X1X10这十个向量,那么同空间中有一个向量我们就可以用X1X10这十个向量线性表示,就有10个待确定系数。但是我们事先是知道一个向量只需要用X1,X2,X3来表示即可了,那么我们可以让上面需要确定的10个参数中的后7个参数约束为0即可,那么其实这个过程就是一种稀疏表示思想。可以看出稀疏表示就是找到空间中的一组基,用这组基可以扩展到空间中的任何向量。稀疏表示的好处在于降低表示复杂度,更直白的原因其实就是减少系数参数,通过稀疏表示,可以充分发挥数据所含有的信息,去掉冗余的数据信息,达到最大化利用数据,这一点是非常重要的。被稀疏表示的特征即是稀疏特征。

    详细以下:
    https://blog.csdn.net/on2way/article/details/50389968

    展开全文
  • 大话数据结构

    2019-01-10 16:35:22
    《璇玑图》共八百四十字,纵横各二十九字,纵、横、斜、交互、正、反读或退一字、迭一字读均可成诗,诗有、四、五、六、七言不等,目前有人统计可组成七千九百五十八首诗。听清楚哦,是7958首。 第6章树 149 6.1...
  • 大话数据结构 程杰

    2018-09-01 10:06:43
    《璇玑图》共八百四十字,纵横各二十九字,纵、横、斜、交互、正、反读或退一字、迭一字读均可成诗,诗有、四、五、六、七言不等,目前有人统计可组成七千九百五十八首诗。听清楚哦,是7958首。 第6章树 149 6.1...
  • 因此,如何对这些数据进行处理,找到数据之间的内在联系,已成为人们日益关注的问题.传统的主成分分析方法是很受欢迎的处理高维数据的降维工具,但其提取的主成分的元素大都是非零的,这就很难去解释主成分对应的具体特征...
  • 大话数据结构-程杰

    2014-07-13 23:45:52
    《璇玑图》共八百四十字,纵横各二十九字,纵、横、斜、交互、正、反读或退一字、迭一字读均可成诗,诗有、四、五、六、七言不等,目前有人统计可组成七千九百五十八首诗。听清楚哦,是7958首。 第6章 树 149 ...
  • 以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、...
  • 补完计划

    2020-12-01 22:00:27
    优酷土豆有四千,B 站番剧 id 接近 6000,可能算是最多的了。实际上,把各站动画爬一边全部添加是可能的。 于是就诞生了番补完计划。首先是要有每季度番的 meta 信息,这部分已经做好...
  • 如果发生了像火灾、偷盗这样的突发事件,及时电话到美国当地相关人员处理 7.4.1 邻接矩阵 224 7.4.2 邻接表 228 7.4.3 十字链表 232 7.4.4 邻接多重表 234 7.4.5 边集数 236 7.5 图的遍历 237 我有一天早晨准备...
  • 如果我们有DEBUG卡插入PCI插槽时,我们就会立即发现复位灯始终显亮,就可以马上判断RESET相关电源存在短接现象。 7.内存有故障 对于此类故障我们可以先拔下内存再开机,如果主机内存报警,说明CPU和主机基本正常。再...
  • 其实后面讲到的数据结构或多或少有数的影子) <ul><li>LIFO(Last In First Out)表示后进先出,后进来的元素第一个弹出栈空间。类似于自动餐托盘,最后放上去的托盘,往往先被拿出来使用。...
  • 有些杀毒软件会报警提示用户或形成日志,需要用户作进一步判断后,再手工停掉相应进程,杀掉病毒。  2、在进程中可以发现的双进程EXE病毒或木马程序,由于手工方式不能同时停掉两个进程,当我们手工掉其中一个进程...
  • 实例211 将指定字段数据为空的记录添上数据 8.4 删除数据 实例212 删除单条数据 实例213 删除数据库中无用处的记录 8.5 视图 实例214 动态创建视图 实例215 通过视图更改数据 实例216 删除视图 8.6 触发器 ...
  • 表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572个实例。  本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源...
  • 表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572个实例。  本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源...
  • 全书分起步篇、提高篇和实例篇篇,共21章。起步篇为第1章~第10章,主要介绍认识Visual C#,C#语言基础,C#语句控制,数组、面向对象编程,熟悉WinForms应用程序,WinForms窗体介绍,WinForms应用程序开发常用控件...
  •  首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系,那么如何判断三个学生的优秀程度呢?首先我们一眼就能看出来,数学,物理,化学这三门课的成绩构成了这组数据的主成分(很显然,数学...

    一:引入问题

      首先看一个表格,下表是某些学生的语文,数学,物理,化学成绩统计:

      首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系,那么如何判断三个学生的优秀程度呢?首先我们一眼就能看出来,数学,物理,化学这三门课的成绩构成了这组数据的主成分(很显然,数学作为第一主成分,因为数据成绩拉的最开)。

      那么为什么我们能一眼看出来呢?

      当然是我们的坐标轴选对了!!

      下面,我们继续看一个表格,下标是一组学生的数学,物理,化学,语文,历史,英语成绩统计:

      那么这个表我们能一眼看出来吗?

      数据太多了,以至于看起来有些凌乱,无法直接看出这组数据的主成分,因为在坐标系下这组数据分布的很散乱。究其原因,是因为无法拨开遮住肉眼的迷雾,如果把这些数据在相应的空间中表示出来,也许你就能换一个观察角度找出主成分,如下图所示:

      简单的二维或者三维我们可以想象出来其分布状态,那么对于更高维的数据,能想象出来其分布吗?还有,就算能描述分布,如何精确地找到这些主成分的轴?如何衡量你提取的主成分到底占了整个数据的多少信息?所以,我们就要用到主成分分析的处理方法。

      为了说明什么是数据的主成分,我们首先得了解数据降维,数据降维时怎么回事?

    二,数据降维

      假设三维空间中有一系列点,这些点分布在一个过原点的斜面上,如果你用自然坐标x,y,z这三个轴来表示这组数据的话,需要使用三个维度,而事实上,这些点的分布仅仅是在一个二维的平面上,那么问题出在哪里?如果你仔细想想,能不能把x,y,z坐标系旋转一下,使数据所在平面与x,y平面重合?这就对了!如果把旋转后的坐标记为x',y',z',那么这组数据的表示只用x'和y'两个维度表示即可!

      当然了,如果想恢复原来的表示方式,那就得把这两个坐标之间的变换矩阵存下来。这样就能把数据维度降下来了!但是,我们要看到这个过程的本质,如果把这些数据按行或者按类排成一个矩阵,那么这个矩阵的秩就是2!这些数据之间是有相关性的,这些数据构成的过原点的向量的最大线性无关组包含2个向量,这就是为什么一开始就假设平面过原点的原因!

      那么如果不过原点呢?这就是数据中心化的缘故!将坐标原点平移到数据中心,这样原本不相关的数据在这个新坐标系中就有相关性了!有趣的是,三点一定共面,也就是三维空间中任意三点中心化后都是线性相关的,一般来讲n维空间中n个点一定能在一个n-1维子空间中分析!

      总结一下这个例子,数据降维后并没有丢弃任何东西,因为这些数据在平面以外的第三个维度的分量都为0。现在,假设这些数据在z'轴有一个很小的抖动,那么我们仍然用上述的二维表示这些数据,理由是我们可以认为这两个轴的信息是数据的主成分,而这些信息对于我们的分析已经足够了,z'轴上的抖动很有可能是噪音,也就是说本来这组数据是有相关性的,噪声的引入,导致了数据不完全相关,但是,这些数据在z'轴上的分布与原点构成的夹角非常小,也就是说在z'轴上有很大的相关性,综合考虑,就可以认为数据在x',y'轴上的投影构成了数据的主成分!

      所以说,降维肯定意味着信息的丢失,不过鉴于实际数据本身常常存在的相关性,我们可以想办法在降维的同时将信息的损失尽量降低。

      下面在说一个极端的情况,也许在现实中不会出现,但是 类似的情况还是很常见的。

      假设某学籍数据有两列M和F,其中M列的取值是如果此学生为男性,则取值为1,为女性则取0;而F列是学生为女性,则取值为0,男性则为1.此时如果我们统计全部学籍数据,会发现对于任何一条记录来说,当M为1时F必定为0,反之当M为0时F必定为1,在这种情况下,我们将M或者F去掉实际上没有任何信息的损失,因为只要保留一列就可以完全还原另一列。

      那么降维我们差不多说清楚了,现在我们将自己面对的数据抽象为一组向量,那么下面我们有必要研究一些向量的数学性质,而这些数学性质将成为后续推导出PCA的理论基础。

     三,PCA基本数学原理

    3.1 内积与投影

      下面先看一个向量运算:内积。

      两个维数相同的向量的内积被定义为:

      内积运算将两个向量映射为一个实数,其计算方式非常容易理解,但是其意义并不明显,下面我们分析内积的几何意义。假设A和B是两个n维向量,我们知道n维向量可以等价表示为n维空间中的一条从原点发射的有向线段,为了简单期间,我们假设A和B均为二维向量,则

      那么在二维平面上A和B可以用两条发自原点的有向线段表示,如下图:

      现在我们从A点向B所在直线引入一条垂线,我们知道垂线与B的交点叫做A在B上的投影,再假设A与B的夹角为a,则投影的矢量长度为

      其中是向量A的模,也就是A线段的标量长度。

      注意这里区分了矢量长度和标量长度,标量长度总是大于等于0,值就是线段的长度;而矢量长度可能为负,其绝对值是线性长度,而符号取决于其方向与标准方向相同或者相反。

      可能大家还没明白内积和这个东西有什么关系,不过我们将内积表示为另一种我们熟悉的方式:

      现在明白了点吧,A与B的内积等于A到B的投影长度乘以B的模,在进一步,如果我们假设B的模为1,即让,那么就变成了下面公式(也就是上面我们说的投影的矢量长度):

      也就是说,设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度!这就是内积的一种几何解释,也就是我们得到的第一个重要结论。

    3.2 基

      下面我们继续在二维空间讨论向量,上文说过,一个二维向量可以对应二维笛卡尔直角坐标系中从原点出发的一条有向线段,例如下面这个向量:

       在代数表示方面,我们经常使用线段终点的点的坐标表示向量,例如上面的向量可以表示为(3,2),这里我们再熟悉不过的向量表示。

      不过我们常常忽略,只有一个(3,2)本身是不能够精确表示一个向量的,我们仔细看一下,这里的坐标(3,2)实际上表示的是向量在x轴上的投影值3,在y轴上的投影值为2。也就是说我们使其隐式引入一个定义:以x轴和y轴上正方向长度为1的向量为标准,那么一个向量(3,2)实际上是说在x轴投影为3而y轴投影为2.注意投影是一个矢量,所以可以为负。

      更正式的说,向量(x,y)实际上表示线性组合:

      不难证明所有二维向量都可以表示为这样的线性组合,此处(1,0)和(0,1)叫做二维空间的一组基。

      所以,要准确描述向量,首先要确定一组基,然后给出基所在的各个直线上的投影值,就可以了,只不过我们经常省略第一步,而默认以(1,0)和(0,1)为基。

      我们之所以默认选择(1,0)和(0,1)为基,当然是比较方便,因为他们分别是x和y轴正方向上的单位向量,因此就使得二维平面上点坐标和向量一一对应,非常方便。但实际上任何两个线性无关的二维向量都可以成为一组基,所谓线性无关在二维平面内可以直观认为是两个不再一条直线上的向量。

      例如,(1,1)和(1,-1)也可以成为一组基。一般来说,我们希望基的模是1,因为从内积的意义可以看到,如果基的模式1,那么就可以方便的用向量点乘基而直接获得其在新基上的坐标了!实际上,对应于任何一个向量我们总可以找到其同方向上模为1的向量,只要让两个分量分别除以模就好了,例如上面的基就可以变为:

      现在我们想获得(3,2)在新基上的坐标,即在两个方向上的投影矢量值,那么根据内积的几何意义,我们只要分别计算(3,2)和两个基的内积,不难得到新的坐标为

      下图给出了新的基以及(3,2)在新基上坐标值的示意图:

      另外这里要注意的是,我们列举的例子中基是正交的(即内积为0,或者说相互垂直),但是可以成为一组基的唯一要求就是线性无关,非正交的基也是可以的,不过因为正交基有较好的性质,所以一般使用的基都是正交的。

    3.3 基变换的矩阵表示

      下面我们找一种简单的方式来表示基变换,还是拿上面的例子,想一下,将(3,2)变换为新基上的坐标,就是用(3,2)与第一个基做内积运算,作为第一个新的坐标分量,然后用(3,2)与第二个基做内积运算,作为第二个新坐标的分量。实际上,我们可以用矩阵想成的形式简洁的表示这个变换:

      那么其中矩阵的两行分别为两个基,乘以原向量,其结果刚好为新基的坐标,可以稍微扩展一下,如果我们有m个二维向量,只要将二维向量按照列排成一个两行m列的矩阵,然后用“基矩阵”乘以这个矩阵,就得到了所有这些向量在新基下的值,例如(1,1),(2,2),(3,3)想变换到刚才那组基上,则可以变为这样:

      于是一组向量的基变换被表示为矩阵的相乘。

      一般地,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按照行组成矩阵A,,然后将向量按照列组成矩阵B,那么两个矩阵的乘积AB就是变换结果,其中AB的第m列为A中的第M列变换后的结果。

      数学表示为:

      其中Pi是一个行向量,表示第i个基,aj是一个列向量,表示第j个原始数据记录。

      特别要注意的是,这里R可以小于N,而R决定了变换后数据的维数,也就是说,我们可以将一个N维数据变换到更低维度的空间中去,变换后的维度取决于基的数量,因此这种矩阵相乘的表示也可以表示为降维变换。 

       最后,上述分析同时给矩阵相乘找到了一种物理解释:两个矩阵相乘的意义是将右边矩阵中每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。更抽象的说:一个矩阵可以表示为一种线性变换。

    3.4 协方差矩阵及优化目标

      上面我们讨论了选择不同的基可以对同样一组数据给出不同的表示,而且如果基的数量少于向量的本身的维数,则可以达到降维的效果,但是我们还没有回答最关键的一个问题:如何选择基才是最优的,或者说,如果我们有一组N维向量,现在要将其降到K维(K小于N),那么我们应该如何选择K个基才能最大程度保留原有的信息?

      要完全数学化这个问题非常繁杂,这里我们用一个非形式化的直观方法来看这个问题。

      为了避免过于抽象的讨论,我们仍然以一个具体的例子展开,假设我们的数据由五条记录组成,将它们表示为矩阵形式:

      其中每一列为一条数据记录,而一行为一个字段,为了后续处理方便,我们首先将每个字段内所有值都减去字段均值,其结果是将每个字段都变为均值为0(这样做的好处后面可以看到)。

      我们看上面的数据,第一个字段的均值为2,第二个字段的均值为3,所以变换后:

      我们可以看到五条数据在平面直角坐标系内的样子:

      现在问题来了:如果我们必须使用一维来表示这些数据,又希望尽量保留原始的信息,你要如何选择?

      通过上一节对及变换的讨论我们知道,这个问题实际上是要在二维平面中选择一个方向,将所有数据都投影到这个方向所在的直线上,用投影值表示原始记录,这是一个实际的二维降到一维的问题。

      那么如何选择这个方向(或者说是基)才能尽量保留最多的原始信息呢?一种直观的看法是:希望投影后的投影值尽可能分散。

      以上图为例,可以看出如果向x轴投影,那么最左边的两个点会重叠在一起,中间的两个点也会重叠在一起,于是本身四个各不相同的二维点投影后只剩下两个不同的值了,这是一种严重的信息丢失,同理,如果向y轴投影最上面的两个点和分布在x轴上的两个点也会重叠,所以看来x和y轴都不是最好的投影选择。我们直观目测,如果向通过第一象限和第三象限的斜线投影,则五个点在投影后还是可以区分的。

      下面我们用数学方法表述这个问题。

    3.5 方差

      上文说道,我们希望投影后投影值尽可能分散,而这种分散程度,可以用数学上的方差来表述,此处,一个字段的方差可以看做事每个元素与字段均值的差的平方和的均值,即:

      由于上面我们已经将每个字段的均值都化0 了,因此方差可以直接用每个元素的平方和除以元素个数表示:

      于是上面的问题被形式化表示为:寻找一个一维基,使得所有数据变换为这个基上的坐标表示后,方差值最大。

    3.6 协方差

      对于上面二维降成一维的问题来说,找到那个使得方差最大的方向就可以了,不过对于更高维,还有一个问题需要解决,考虑三维降到二维问题,与之前相同,首先我们希望找到一个方向使得投影后方差最大,这样就完成了第一个方向的选择,继而我们选择第二个投影方向。

      如果我们还是单纯的只选择方差最大的方向,很显然,这个方向与第一个方向应该是“几乎重合在一起”,显然这样的维度是没有用的,因此应该有其他约束条件。从直观上讲,让两个字段尽可能表示更多的原始信息,我们是不希望他们之间存在线性相关性,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。

       数字上可以用两个字段的协方差表示其相关性,由于已经让每个字段均值为0,则:

      可以看出,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。

      当协方差为0时,表示两个字段完全独立,为了让协方差为0,我们选择第二个即时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。

      至此,我们得到了降维问题的优化目标:将一组N维向量降维k维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的k个方差)。

      然后我们用X乘以X的转置,并乘上系数1/m:

      这时候我们会发现,这个矩阵对角线上的两个元素分别是两个字段的方差,而其他元素是a和b的协方差,两者被统一到了一个矩阵的。

      根据矩阵相乘的运算法则,这个结论很容易被推广到一般情况:

      设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设,则C是一个对称矩阵,其对角线分别是各个字段的方差,而第l行j列和j行i列元素相同,表示i和j两个字段的协方差。

    3.7 协方差矩阵

      上面我们导出了优化目标,但是这个目标似乎不能直接作为操作指南(或者说算法),因为它只说要什么,但是根本没有说怎么做,所以我们要在数学上继续研究计算方案。

      我们看到,最终要达到的目标与字段内方差及字段间协方差有密切关系。因此我们希望能将两者统一表示,仔细观察发现,两者均可以表示为内积的形式,而内积又与矩阵相乘密切相关。于是,我们来了灵感:

      假设我们只有a和b 两个字段,那么我们将他们按行组成矩阵X:

     

    3.8 协方差矩阵对角化

      根据上述推导,我们发现要达到优化目前等价于将协方差矩阵对角化:即除对角线外的其他元素化为0,并且在对角线上将元素按照大小从上到下排列,这样我们就达到了优化目的,这样说可能还不清晰,我们进一步看下原矩阵与基变换后矩阵协方差矩阵的关系:

      设原始数据矩阵X对于的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据,设Y的协方差矩阵为D,我们推导一下D与C的关系:

      现在事情很明白,我们要找的P不是别的,而是能让原始协方差矩阵对角化的P,换句话说,优化目标变成了寻找一个矩阵P,满足PCPT是一个对角矩阵,并且对角元素按照从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。

      至此,我们离“发明”PCA还有一步之遥!

      现在所有的焦点都聚集在了协方差矩阵对角化问题上,有时,我们真应该感谢数学家的先行,因为矩阵对角化在线性代数领域已经属于被玩烂的东西,所以这在数学上根本不是问题。

      由上文知道,协方差矩阵C是一个对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:

      1)实对称矩阵不同特征值对应的特征向量必然正交。

      2)设特征向量重数为r,则必然存在r个线性无关的特征向量对应于,因此可以将这r个特征向量单位正交化。

      有上面两条可知,一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为,我们将其按照列组成矩阵:

      则对协方差矩阵C有如下结论:

      其中为对称矩阵,其对角元素为各特征向量对应的特征值(可能有重复)。

      到这里,我们发现我们已经找到了需要的矩阵P:

      P是协方差矩阵的特征向量单位化后按照行排列出的矩阵,其中每一行都是C的一个特征向量,如果设P按照中特征值从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就可以得到我们需要的降维后的数据矩阵Y。

      至此,我们完成了整个PCA的数学原理讨论。

    3.9 对上面例子整合

      1,原始数据集矩阵X:

      2,求均值后:

      3,再求协方差矩阵:

      4,特征值:

      5,对应的特征向量:

      6,标准化:

      7,选择较大特征值对应的特征向量:

      8,执行PCA变换:Y=PX 得到的Y就是PCA降维后的值 数据集矩阵:

      9,计算代码:

    from  numpy  import *
    
    li = [[1,1],[1,3],[2,3],[4,4],[2,4]]
    matrix = mat(li)
    # 求均值
    mean_matrix = mean(matrix,axis=0)
    # print(mean_matrix.shape)
    # 减去平均值
    Dataadjust = matrix - mean_matrix
    # print(Dataadjust.shape)
    #计算特征值和特征向量
    covMatrix = cov(Dataadjust,rowvar=0)
    eigValues , eigVectors = linalg.eig(covMatrix)
    # print(eigValues.shape)
    # print(eigVectors.shape)
    # 对特征值进行排序
    eigValuesIndex = argsort(eigValues)
    # print(eigValuesIndex)
    # 保留前K个最大的特征值
    eigValuesIndex = eigValuesIndex[:-(1000000):-1]
    # print(eigValuesIndex)
    # 计算出对应的特征向量
    trueEigVectors = eigVectors[:,eigValuesIndex]
    # print(trueEigVectors)
    # 选择较大特征值对应的特征向量
    maxvector_eigval = trueEigVectors[:,0]
    # print(maxvector_eigval)
    # 执行PCA变换:Y=PX 得到的Y就是PCA降维后的值 数据集矩阵
    pca_result = maxvector_eigval * Dataadjust.T
    print(pca_result)
    

      

      10,代码执行结果:

    [[-2.12132034 -0.70710678  0.          2.12132034  0.70710678]]
    

      

    四,主成分分析(PCA)算法步骤

      介绍一个PCA的教程:A tutorial on Principal Components Analysis ——Lindsay I Smith

     

      PCA(Principal Components Analysis)即主成分分析,是一种常用的数据分析手段,是图像处理中经常用到的降维方法。对于一组不同维度之间可能存在线性相关关系的数据,PCA能够把这组数据通过正交变换变成各个维度之间线性无关的数据,经过PCA处理的数据中的各个样本之间的关系往往更直观,所以它是一种非常常用的数据分析和预处理工具。PCA处理之后的数据各个维度之间是线性无关的,通过剔除方差较小的那些维度上的数据,我们可以达到数据降维的目的。

      PCA从原始变量出发,通过旋转变化(即原始变量的线性组合)构建出一组新的,互不相关的新变量,这些变量尽可能多的解释原始数据之间的差异性(即数据内在的结构),他们就成为原始数据的主成分。由于这些变量不相关,因此他们无重叠的各自解释一部分差异性。依照每个变量解释时差异性大小排序,他们成为第一主成分,第二主成分,以此类推。

      主成分分析(PCA)是一种基于变量协方差矩阵对数据进行压缩降维,去噪的有效方法,PCA的思想是将n维特征映射到k维上(k<n),这k维特征称为主元(主成分),是旧特征的线性组合,这些线性组合最大化样本方差,尽量使用新的k个特征互不相关。这k维是全新的正交特征,是重新构造出来的k维特征,而不是简单地从n维特征中取出其余n-k维特征。

      说了这么多,下面说一下PCA降维的算法步骤。

      设有m条n维数据:

    1) 将原始数据按列组成n行m列矩阵X

    2)将X的每一行(代表一个属性字段)进行零均值化(去平均值),即减去这一行的均值

    3)求出协方差矩阵  

    4)求出协方差矩阵的特征值及对应的特征向量

    5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P(保留最大的k各特征向量)

    6)Y=PX 即为降维到K维后的数据

     

    五,实例PCA计算过程

      现在假设有一组数据如下:

      行代表了样例,列代表了特征,这里有10个样例,每个样例两个特征,可以这样认为,有10篇文档,x是10篇文档中“learn”出现的TF-IDF,y是10篇文档中“study”出现的IF_IDF。

      第一步,分别求x和y的平均值,然后对所有的样例,都减去对应的均值。这里x的均值为1.81,y的均值为1.91,那么第一个一个样例减去均值后为(0.69,0.49),以此类推得到:

     

      第二步,计算特征协方差矩阵,如果数据是三维的,那么协方差矩阵为:

      这里是2维的,只有x和y,求解得:

      

      对角线上分别是x和y的方差,非对角线上是协方差。协方差是衡量两个变量同时变化的变化程度。协方差大于0表示x和y若一个增加,另一个也增加;协方差小于0宝石一个增加,则另一个减少。如果x和y是统计独立的,那么二者之间的协方差就是0;但是协方差是0 ,并不能说明x和y是独立的。协方差绝对值越大,两者对彼此的影响越大,反之越小。协方差是没有单位的量,因此,如果同样的两个变量所采用的量纲发生变化,他们的协方差也会产生数值上的变化。

     

      第三步,计算协方差矩阵的特征向量和特征值,选取特征向量

     


         上面两个特征值,下面是对应的特征向量,特征值0.490833989对应的特征向量是(-0.735178656, 0.677873399),这里的特征向量是正交的、归一化的,即长度为1。

     

      第四步,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k各特征向量分别作为列向量组成特征向量矩阵。

     

      如果数据中有n维,计算出n个特征向量和特征值,选择前k个特征向量,然后最终的数据集合只有k维,取的特征向量命名为FeatureVector。 

         

      这里的特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量是(-0.677873399, -0.735178656)T。 

      第五步,将样本点投影到选取的特征向量上,得到新的数据集

      假设样例数为m,特征数为n,减去均值后的样本矩阵为DataAdjust(m*n),协方差矩阵是n*n,选取的k个特征向量组成的矩阵为EigenVectors(n*k)。那么投影后的数据FinalData为

    clip_image011[4]

      得到结果为

      

      这样,就将原始样例的n维特征变成了k维,这k维就是原始特征在k维上的投影。

      代码如下:

    from  numpy  import *
    
    li = [[2.5,2.4],[0.5,0.7],[2.2,2.9],[1.9,2.2],[3.1,3.0],[2.3,2.7],[2.0,1.6],[1.0,1.1],[1.5,1.6],[1.1,0.9]]
    matrix = mat(li)
    # 求均值
    mean_matrix = mean(matrix,axis=0)
    # print(mean_matrix)    #[[1.81 1.91]]
    # 减去平均值
    Dataadjust = matrix - mean_matrix
    # print(Dataadjust)
    '''
    [[ 0.69  0.49]
     [-1.31 -1.21]
     [ 0.39  0.99]
     [ 0.09  0.29]
     [ 1.29  1.09]
     [ 0.49  0.79]
     [ 0.19 -0.31]
     [-0.81 -0.81]
     [-0.31 -0.31]
     [-0.71 -1.01]]
    '''
    #计算特征值和特征向量
    covMatrix = cov(Dataadjust,rowvar=0)
    # print(covMatrix)
    '''
    [[0.61655556 0.61544444]
     [0.61544444 0.71655556]]
    '''
    eigValues , eigVectors = linalg.eig(covMatrix)
    # print(eigValues)
    # print(eigVectors)
    '''
    [0.0490834  1.28402771]
    
    [[-0.73517866 -0.6778734 ]
     [ 0.6778734  -0.73517866]]'''
    # 对特征值进行排序
    eigValuesIndex = argsort(eigValues)
    # print(eigValuesIndex)
    # 保留前K个最大的特征值
    eigValuesIndex = eigValuesIndex[:-(1000000):-1]
    # print(eigValuesIndex)
    # 计算出对应的特征向量
    trueEigVectors = eigVectors[:,eigValuesIndex]
    # print(trueEigVectors)
    '''
    [[-0.6778734  -0.73517866]
     [-0.73517866  0.6778734 ]]
     '''
    # # 选择较大特征值对应的特征向量
    maxvector_eigval = trueEigVectors[:,0]
    # print(maxvector_eigval)
    '''
    [-0.6778734  -0.73517866]
    '''
    # # 执行PCA变换:Y=PX 得到的Y就是PCA降维后的值 数据集矩阵
    pca_result = maxvector_eigval * Dataadjust.T
    # print(pca_result)
    '''
    [[-0.82797019  1.77758033 -0.99219749 -0.27421042 -1.67580142 -0.9129491
       0.09910944  1.14457216  0.43804614  1.22382056]]
    '''
    

      

      上面的数据可以认为是learn和study特征融合为一个新的特征叫LS特征,该特征基本上代表了这两个特征,该过程如下图所示:

      正号表示预处理后的样本点,斜着的两条线就分别是正交的特征向量(由于协方差矩阵是对称的,因此其特征向量正交),最后一句矩阵乘法就是将原始样本点分别往特征向量对应的轴上做投影,下图是FinalData根据最大特征值对应的特征向量转化回去后的数据集形式,可看出是将DataAdjust样本点分别往特征向量对应的轴上做投影:

      

      如果取的k=2,那么结果是

         clip_image014[4]

      可见,若使用了所有特征向量得到的新的数据集,转化回去之后,与原来的数据集完全一样(只是坐标轴旋转)。

    六,python实现主成分(PCA)降维

    from numpy import *
    
    def loadDataSet(fileName, delim='\t'):
        fr = open(fileName)
        stringArr = [line.strip().split(delim) for line in fr.readlines()]
        datArr = [map(float,line) for line in stringArr]
        return mat(datArr)
    
    def pca(dataMat, topNfeat=999999):
        meanVals = mean(dataMat, axis=0)
        DataAdjust = dataMat - meanVals           #减去平均值
        covMat = cov(DataAdjust, rowvar=0)
        eigVals,eigVects = linalg.eig(mat(covMat)) #计算特征值和特征向量
        #print eigVals
        eigValInd = argsort(eigVals)
        eigValInd = eigValInd[:-(topNfeat+1):-1]   #保留最大的前K个特征值
        redEigVects = eigVects[:,eigValInd]        #对应的特征向量
        lowDDataMat = DataAdjust * redEigVects     #将数据转换到低维新空间
        reconMat = (lowDDataMat * redEigVects.T) + meanVals   #重构数据,用于调试
        return lowDDataMat, reconMat
    

      测试数据testSet.txt由1000个数据点组成。下面对数据进行降维,并用matplotlib模块将降维后的数据和原始数据一起绘制出来。

    (链接:https://pan.baidu.com/s/19k4ND3ISUjhfWZhj4Fhcbw 提取码:r3n7 )

    数据:(此数据直接复制可能无法使用,会报错, could not convert string to float,建议最好下载)

    10.235186	11.321997
    10.122339	11.810993
    9.190236	8.904943
    9.306371	9.847394
    8.330131	8.340352
    10.152785	10.123532
    10.408540	10.821986
    9.003615	10.039206
    9.534872	10.096991
    9.498181	10.825446
    9.875271	9.233426
    10.362276	9.376892
    10.191204	11.250851
    7.720499	6.476300
    9.334379	8.471268
    7.963186	6.731333
    8.244973	9.013785
    9.569196	10.568949
    8.854793	9.076536
    9.382171	7.240862
    8.179055	8.944502
    8.267896	8.797017
    9.047165	8.725068
    8.741043	7.901385
    7.190216	7.804587
    8.081227	9.314431
    8.047460	5.720780
    7.917584	7.543254
    8.676942	10.102220
    9.210251	9.424717
    7.732998	9.840202
    7.681754	8.609897
    7.925863	10.079159
    8.261509	8.242080
    8.514872	7.527561
    10.324450	10.804481
    7.856710	7.931543
    7.858608	7.995340
    9.196808	6.577598
    9.644415	10.935081
    9.579833	9.085021
    7.888484	5.976428
    9.072624	9.703344
    8.914184	9.298515
    7.822869	7.086663
    10.538554	11.061464
    8.280187	8.709012
    8.884223	8.670105
    9.359927	10.575055
    9.078611	9.710833
    7.935134	8.586173
    8.805945	10.575145
    9.584316	9.614076
    11.269714	11.717254
    9.120444	9.019774
    7.977520	8.313923
    8.104648	9.456128
    8.617126	7.331723
    9.033811	9.469706
    8.327680	5.122092
    8.532272	10.100909
    9.295434	8.933824
    9.905202	9.027559
    10.585764	10.912733
    10.427584	11.532578
    9.072767	9.960144
    9.164275	8.645121
    9.746058	10.717080
    9.286072	9.340024
    8.188233	7.432415
    7.948598	8.445419
    7.563350	5.656178
    8.972405	8.801869
    9.980868	8.788996
    7.753490	7.714248
    7.431143	9.032819
    8.943403	8.359354
    10.481890	9.988969
    9.150454	10.278760
    8.123894	9.060351
    8.626164	8.469342
    7.354185	7.631252
    11.323046	11.015032
    8.190008	6.860792
    8.412598	7.661358
    9.258404	8.580382
    11.007915	11.443881
    8.279403	8.347003
    8.931149	10.105221
    10.239245	10.077473
    8.129346	7.096877
    8.485823	9.373561
    10.703640	11.651618
    9.500728	8.150228
    9.712414	9.910445
    9.333374	9.407557
    8.787865	10.168021
    9.238180	10.253478
    9.577388	8.895150
    10.447753	10.318227
    9.303944	9.223136
    9.883268	11.662945
    9.471921	10.443792
    10.007753	9.579912
    8.110298	7.106263
    6.964069	6.585040
    10.413499	9.649309
    8.032629	7.053254
    8.015549	9.166753
    10.462924	8.656612
    9.530788	10.134130
    9.202658	9.314222
    10.103241	10.235159
    7.849264	6.624856
    9.059071	7.992555
    10.172889	10.724789
    9.528439	6.420990
    7.190422	6.789792
    9.085716	9.846328
    9.452887	8.735386
    7.417322	7.348594
    8.468639	8.715086
    8.303642	9.463231
    9.939052	10.026771
    8.701989	7.516978
    9.737541	10.587281
    8.280233	7.852444
    10.648386	10.259203
    9.173893	10.520372
    9.135397	10.751406
    7.594580	8.488833
    8.587520	8.463406
    8.581887	7.888644
    9.448768	8.707422
    7.882664	7.772030
    10.050635	9.859720
    9.012078	9.533899
    8.770020	8.882996
    9.428804	9.446306
    8.504209	8.319693
    9.800003	10.964667
    8.069660	7.683099
    10.012217	10.320644
    8.704677	8.918146
    8.198722	7.297786
    9.868322	9.901657
    9.426997	11.480353
    9.228767	9.262976
    8.952359	9.528471
    8.186847	8.600587
    9.026371	8.705143
    9.483364	9.807079
    7.826587	7.975401
    11.197846	10.959298
    7.632421	8.769745
    8.761605	8.309365
    9.353670	8.728758
    6.466637	6.038996
    8.370634	9.178830
    10.337451	11.075600
    8.917679	8.288367
    9.076621	8.487626
    7.278948	4.634097
    10.153017	11.219183
    7.132603	5.853118
    9.338644	9.805940
    9.878602	9.187000
    10.009505	10.924505
    9.384438	10.691860
    7.535322	8.160481
    6.808732	8.268469
    8.302965	8.075009
    8.345379	8.305356
    9.517530	8.249839
    9.267825	9.999109
    10.291511	11.032664
    8.605909	8.705207
    8.331145	7.812295
    8.632412	10.574287
    8.766397	8.712107
    9.407070	9.732756
    9.709495	9.729569
    10.422201	11.070360
    6.831495	6.466763
    8.187122	8.405929
    8.523093	9.041844
    7.952394	6.801220
    10.490780	10.001468
    10.813791	9.802494
    7.861113	7.541475
    8.800399	8.738974
    7.542152	6.612838
    9.446981	9.378659
    8.281684	7.358572
    8.473801	8.208343
    11.736767	11.022029
    8.379578	8.714348
    8.313718	8.832381
    9.342589	10.416659
    7.560710	6.889648
    9.295344	9.739040
    9.176612	9.718781
    8.614385	10.150521
    9.079373	8.839794
    10.333289	10.921255
    9.453502	7.335134
    10.174590	10.292500
    9.693713	9.793636
    7.474925	7.751391
    10.107905	10.156997
    9.257241	7.854266
    10.209794	11.410157
    7.248050	6.433676
    10.150091	9.288597
    10.077713	10.321500
    8.191122	8.931519
    8.791469	10.287216
    9.229434	9.095193
    8.682571	8.546005
    7.524099	7.709751
    8.442410	8.326037
    9.364851	9.095989
    9.061222	7.557899
    7.989999	8.555363
    8.801275	8.868732
    10.351932	9.497796
    10.230710	10.496151
    9.783163	9.891408
    10.651481	9.431617
    8.387393	6.400507
    9.003921	7.050003
    8.483723	8.314886
    9.020501	7.545771
    9.329105	11.095661
    9.583687	9.271929
    8.908705	8.407529
    8.835406	8.083517
    9.736362	8.296735
    10.030302	9.737178
    8.287142	6.993460
    9.173211	9.306335
    9.026355	9.696531
    9.128391	9.921247
    11.486346	12.910777
    11.519458	11.472111
    9.027707	10.263974
    9.351935	8.542200
    9.421701	11.403201
    9.005687	8.100969
    7.015279	6.614278
    8.213607	8.340948
    8.226646	8.718997
    8.144753	8.366877
    10.133642	12.790169
    10.763481	10.847016
    10.003622	10.337716
    9.007955	9.792482
    8.670506	10.782931
    10.386414	9.956162
    10.104761	10.123044
    8.079502	8.304075
    9.945424	11.855409
    8.642497	9.998066
    9.349722	8.690328
    9.034991	8.826490
    8.738746	7.518464
    8.919532	9.740312
    9.464136	10.444588
    10.710057	12.666857
    10.042007	10.532091
    8.447996	7.426363
    9.509351	9.030516
    11.946359	10.553075
    9.981617	9.912651
    9.853876	9.632967
    10.560648	11.881714
    8.370952	9.989491
    8.323209	10.102529
    9.828359	11.702462
    8.515623	8.426754
    9.004363	9.628036
    10.529847	10.458031
    10.028765	10.624880
    9.448114	9.313227
    8.332617	7.382295
    8.323006	8.276608
    7.740771	8.799750
    8.379615	8.146192
    8.340764	9.184458
    9.863614	8.254694
    9.969563	9.405134
    9.164394	9.182127
    10.622098	9.722592
    9.592072	10.029446
    8.212027	7.477366
    9.080225	8.244448
    8.555774	7.842325
    9.958046	9.696221
    8.972573	9.797128
    9.213223	7.128437
    8.737239	9.385138
    10.333907	10.994856
    8.797511	8.643075
    11.044848	9.623160
    8.539260	9.097113
    11.582163	11.884333
    7.863848	7.176199
    6.218103	5.283562
    9.120602	7.250190
    9.001166	9.635203
    8.081476	8.844224
    9.369802	8.230911
    8.768925	8.666987
    9.841098	8.543896
    10.451522	9.549511
    9.755402	9.117522
    7.988961	6.869854
    8.872507	9.787118
    10.363980	10.716608
    6.315671	5.765953
    9.638879	9.202355
    8.588126	8.037966
    8.947408	9.144386
    9.051130	7.195132
    9.321709	8.380668
    10.146531	9.754745
    9.843373	8.891437
    9.213148	11.700632
    7.630078	7.294753
    8.093088	7.967590
    7.488915	6.090652
    8.126036	8.586472
    8.760350	7.268987
    10.201347	9.141013
    7.838208	7.307700
    6.155653	5.563997
    7.767841	6.254528
    8.425656	8.615832
    10.362168	10.886815
    10.180024	10.378934
    9.794665	10.047812
    9.970394	9.668279
    7.030217	7.060471
    9.275414	9.095738
    10.314911	10.456539
    9.259774	8.204851
    10.023919	9.558307
    8.887540	9.866704
    9.851608	9.410989
    8.710882	7.268012
    9.017007	10.217673
    7.976369	9.000979
    8.738332	8.664734
    8.344510	8.977600
    8.959613	12.324240
    9.169982	8.624635
    7.487451	8.154859
    8.706316	7.719455
    9.564832	8.940403
    8.327775	9.044509
    9.734032	10.195255
    8.021343	6.445092
    9.081048	11.024397
    7.626651	6.549263
    10.725858	8.575374
    8.731381	8.307788
    10.394237	10.596874
    7.029311	7.658832
    9.517907	7.509904
    10.394064	10.060898
    10.752500	9.431601
    9.692431	10.332130
    9.651897	7.876862
    8.592329	10.096837
    10.212801	10.827496
    9.045043	9.265524
    8.901643	8.036115
    10.794525	9.318830
    11.040915	12.021746
    8.390836	9.672469
    9.840166	11.226568
    10.806810	12.205633
    8.924285	10.934056
    8.411251	8.289672
    7.808891	9.663290
    9.733437	8.486958
    8.300026	7.477374
    8.221756	10.278308
    9.096867	9.619677
    9.410116	9.289188
    10.097176	9.768470
    9.387954	8.844855
    9.376134	7.704630
    8.231599	9.101203
    9.910738	10.694855
    8.645689	7.764589
    8.090245	7.109596
    9.253483	9.813672
    9.331546	8.039386
    9.843256	10.208792
    9.713131	9.247665
    9.259369	10.704622
    10.243948	9.695883
    6.396262	6.456390
    8.936289	8.703871
    8.750846	9.347273
    6.497155	4.130251
    9.516552	10.164848
    9.125766	8.858775
    8.374387	7.300114
    8.132816	7.621107
    10.099505	9.159134
    9.356477	6.869999
    8.112934	7.587547
    7.265396	6.987031
    11.950505	13.715109
    10.745959	10.822171
    8.893270	7.887332
    6.003473	4.960219
    7.498851	6.451334
    10.162072	9.935954
    8.732617	9.177679
    9.300827	9.952360
    11.908436	12.256801
    9.371215	9.188645
    9.943640	9.245037
    7.386450	7.046819
    8.410374	8.293218
    7.830419	6.440253
    8.263140	8.279446
    11.448164	12.192363
    8.216533	9.186628
    9.316128	10.046697
    8.156927	6.834792
    9.951421	11.240598
    9.059607	8.458446
    10.476339	10.560461
    7.548200	7.227127
    9.432204	7.236705
    9.402750	9.126413
    11.188095	13.853426
    9.520201	11.028131
    8.884154	9.764071
    8.961105	8.833117
    8.549663	8.865765
    10.111708	10.515462
    9.024761	9.169368
    7.904149	8.048756
    9.240995	7.796142
    8.126538	6.116125
    7.442148	7.931335
    9.486821	10.091359
    9.834289	11.694720
    9.009714	11.599170
    9.761314	11.344083
    6.993941	6.562988
    8.659524	8.410107
    7.685363	8.097297
    7.793217	6.519109
    8.883454	9.257347
    8.781821	9.231980
    7.946281	7.658978
    8.523959	10.646480
    9.031525	8.649648
    8.317140	7.758978
    9.192417	11.151218
    8.408486	8.282182
    10.327702	11.459048
    8.389687	8.548727
    8.642250	7.056870
    8.833447	9.267638
    8.805261	8.320281
    9.726211	9.095997
    8.477631	9.507530
    9.738838	9.652110
    8.272108	7.582696
    9.258089	8.495931
    8.334144	8.810766
    8.150904	6.486032
    7.259669	7.270156
    11.034180	11.519954
    10.705432	10.642527
    8.388814	7.159137
    8.559369	7.846284
    7.187988	6.519313
    8.811453	7.765900
    8.492762	7.992941
    8.739752	8.502909
    10.150752	10.420295
    7.062378	5.365289
    8.448195	7.480000
    10.224333	11.592750
    9.533795	9.212845
    9.519492	7.690501
    9.661847	10.376189
    7.963877	8.597193
    10.184486	9.136709
    8.505234	9.159210
    8.187646	8.518690
    9.167590	9.405917
    8.612162	8.518755
    10.970868	10.392229
    9.603649	9.141095
    9.704263	8.830178
    9.657506	8.132449
    9.337882	11.045306
    9.521722	9.537764
    8.954197	8.728179
    8.635658	10.352662
    8.910816	9.020317
    9.900933	9.392002
    10.247105	8.289649
    9.571690	8.171237
    7.388627	7.668071
    8.354008	10.074590
    9.775598	8.835696
    8.768913	7.983604
    8.330199	8.474098
    8.169356	9.361172
    10.346522	10.086434
    7.976144	9.266702
    8.429648	7.865824
    11.261674	11.788587
    10.051066	10.112425
    8.954626	9.789343
    8.382220	8.121012
    9.820642	9.426441
    8.125950	9.695087
    8.646465	7.291808
    8.190202	8.003737
    8.773887	7.306175
    8.731000	10.300436
    9.163098	7.816769
    9.456346	9.223922
    9.645180	9.324053
    8.835060	8.966915
    9.325950	10.943248
    9.941912	9.548535
    9.282799	10.119488
    9.567591	9.462164
    8.529019	9.768001
    9.314824	10.153727
    8.264439	8.273860
    8.307262	8.214036
    9.122041	8.657861
    8.404258	8.389365
    7.828355	8.419433
    9.803180	10.108286
    8.662439	8.581953
    8.883265	8.978377
    8.012330	8.262451
    9.420258	8.974878
    7.015415	6.365940
    9.888832	11.163036
    9.677549	10.346431
    8.410158	7.912899
    9.464147	10.762900
    7.067227	7.035717
    9.320923	10.583089
    9.056917	8.771241
    8.110004	8.387789
    10.310021	10.970014
    8.211185	8.809627
    8.942883	8.840746
    9.479958	8.328700
    8.973982	8.702291
    8.519257	8.764855
    9.424556	8.956911
    7.222919	8.177787
    8.257007	9.700619
    9.778795	9.296134
    8.028806	8.575974
    9.886464	9.965076
    9.090552	6.978930
    9.605548	10.256751
    9.959004	9.610229
    8.308701	9.509124
    7.748293	9.685933
    8.311108	9.428114
    9.697068	10.217956
    9.582991	9.478773
    9.167265	10.198412
    10.329753	10.406602
    8.908819	7.428789
    10.072908	10.393294
    7.992905	9.226629
    8.907696	7.269366
    8.421948	9.342968
    7.481399	7.225033
    10.358408	10.166130
    8.786556	10.279943
    9.658701	11.379367
    10.167807	9.417552
    8.653449	8.656681
    8.020304	8.671270
    8.364348	10.004068
    9.119183	9.788199
    8.405504	9.740580
    11.020930	11.904350
    9.755232	9.515713
    10.059542	9.589748
    8.727131	9.777998
    7.666182	6.028642
    8.870733	8.367501
    9.340446	7.707269
    9.919283	10.796813
    7.905837	8.326034
    10.181187	10.089865
    8.797328	8.981988
    8.466272	7.765032
    10.335914	12.620539
    9.365003	8.609115
    8.011017	7.249489
    10.923993	13.901513
    7.074631	7.558720
    9.824598	8.851297
    8.861026	8.370857
    10.127296	10.861535
    10.548377	10.855695
    8.880470	7.948761
    8.901619	9.674705
    7.813710	9.246912
    10.128808	10.560668
    11.096699	10.911644
    8.551471	6.871514
    8.907241	8.677815
    10.571647	10.294838
    8.815314	8.810725
    8.453396	8.339296
    9.594819	11.487580
    10.714211	9.628908
    7.428788	7.712869
    10.892119	12.747752
    9.024071	11.112692
    7.803375	7.847038
    8.521558	8.881848
    9.742818	11.520203
    9.832836	9.180396
    8.703132	10.028498
    9.905029	11.347606
    10.037536	8.882688
    8.629995	8.392863
    9.583497	9.219663
    8.781687	9.650598
    9.344119	9.537024
    10.407510	9.223929
    7.244488	6.559021
    10.643616	10.288383
    8.757557	6.947901
    10.784590	11.233350
    10.028427	11.330033
    7.968361	6.830308
    8.925954	8.539113
    7.738692	7.114987
    8.192398	8.352016
    10.412017	12.431122
    8.208801	5.777678
    7.820077	7.790720
    9.542754	11.542541
    6.817938	7.429229
    7.365218	7.956797
    9.274391	7.932700
    9.546475	8.803412
    7.471734	6.797870
    8.016969	7.848070
    8.852701	8.458114
    8.215012	8.468330
    6.975507	6.846980
    9.435134	10.609700
    9.228075	9.342622
    8.388410	7.637856
    7.111456	9.289163
    9.403508	8.482654
    9.133894	8.343575
    10.670801	9.750821
    9.983542	10.074537
    10.012865	8.537017
    8.929895	8.951909
    7.666951	7.473615
    9.493839	7.821783
    8.894081	7.059413
    9.593382	9.859732
    9.126847	8.395700
    9.532945	9.850696
    9.459384	9.384213
    8.982743	8.217062
    10.107798	8.790772
    10.563574	9.044890
    8.278963	9.518790
    8.734960	10.494129
    9.597940	9.530895
    10.025478	9.508270
    10.335922	10.974063
    8.404390	8.146748
    7.108699	6.038469
    8.873951	7.474227
    8.731459	8.154455
    8.795146	7.534687
    6.407165	6.810352
    9.979312	10.287430
    8.786715	8.396736
    10.753339	10.360567
    10.508031	10.321976
    10.636925	10.193797
    10.614322	11.215420
    8.916411	8.965286
    8.112756	8.304769
    10.833109	10.497542
    8.319758	9.727691
    9.945336	11.820097
    10.150461	9.914715
    10.185024	10.388722
    9.793569	9.079955
    10.590128	11.811596
    8.505584	6.884282
    10.461428	10.745439
    8.755781	9.418427
    7.488249	7.172072
    10.238905	10.428659
    9.887827	10.427821
    8.529971	8.838217
    8.375208	10.242837
    8.901724	8.398304
    8.607694	9.173198
    8.691369	9.964261
    9.584578	9.641546
    10.265792	11.405078
    7.592968	6.683355
    8.692791	9.389031
    7.589852	6.005793
    10.550386	11.736584
    8.578351	7.227055
    7.526931	6.875134
    8.577081	9.877115
    9.272136	11.050928
    10.300809	10.653059
    8.642013	9.006681
    9.720491	10.265202
    9.029005	9.646928
    8.736201	7.975603
    8.672886	9.070759
    8.370633	8.412170
    9.483776	9.183341
    6.790842	7.594992
    9.842146	10.156810
    9.563336	7.962532
    8.724669	9.870732
    9.012145	9.171326
    9.116948	9.791167
    6.219094	7.988420
    9.468422	8.359975
    8.825231	8.475208
    9.572224	9.696428
    9.609128	8.488175
    9.428590	10.468998
    8.293266	8.617701
    9.423584	10.355688
    9.240796	9.517228
    10.915423	13.026252
    10.854684	11.130866
    9.226816	9.391796
    9.580264	10.359235
    7.289907	6.898208
    9.338857	10.374025
    9.523176	11.332190
    10.162233	10.357396
    8.873930	9.207398
    8.607259	7.794804
    8.852325	8.215797
    8.077272	6.501042
    8.169273	8.269613
    6.806421	7.544423
    8.793151	9.691549
    11.640981	11.365702
    9.544082	11.576545
    9.009266	9.605596
    9.726552	9.426719
    9.495888	10.626624
    8.683982	9.337864
    8.322105	8.631099
    8.887895	8.644931
    8.662659	11.373025
    9.263321	7.536016
    7.802624	7.171625
    8.773183	8.561565
    8.730443	10.197596
    8.942915	7.758383
    8.057618	8.774996
    8.112081	8.202349
    10.378884	12.103755
    9.248876	8.637249
    9.739599	9.708576
    8.126345	8.278487
    8.894788	7.966117
    9.683165	9.019221
    10.886957	12.053843
    9.668852	10.902132
    7.486692	6.471138
    8.794850	9.173609
    8.835915	8.296727
    9.443984	11.375344
    8.696621	6.434580
    9.645560	9.233722
    9.623857	7.915590
    10.840632	12.620268
    7.298135	7.356141
    9.639644	8.902389
    9.849802	7.682624
    10.609964	10.259615
    9.768229	11.382811
    7.646351	7.571849
    10.230300	9.470859
    8.224402	8.496866
    6.879671	8.393648
    7.976247	8.667221
    9.183268	8.694550
    11.471853	12.786280
    10.428349	10.615726
    8.090828	5.902504
    9.738627	8.485792
    8.139709	8.396333
    9.508055	8.990529
    8.857260	8.497732
    8.902558	7.014433
    9.660607	11.040833
    8.772221	10.512150
    11.020038	9.354134
    7.918527	7.742062
    7.630835	7.756260
    11.043272	11.041613
    9.299376	8.674157
    9.795087	8.431837
    9.415683	8.312101
    7.942037	6.942913
    9.724790	11.766496
    10.222032	11.550876
    8.894163	8.306020
    8.394309	8.070420
    9.012776	6.880548
    9.661093	10.138921
    9.896472	9.762372
    9.135628	8.759928
    8.762656	10.306028
    8.602473	8.861956
    10.085297	10.464774
    10.644983	10.945767
    9.034571	8.391668
    8.602920	8.501944
    8.224766	7.402758
    8.755050	9.431085
    9.669937	8.641049
    10.693530	10.287124
    9.462806	7.611153
    9.287707	10.082363
    10.941260	10.783728
    9.263080	7.913328
    10.167111	10.225338
    8.783830	9.465345
    8.958624	8.662136
    9.841649	9.926781
    7.205691	6.790638
    8.629089	9.135461
    7.469440	8.450442
    8.179133	7.790434
    8.083984	7.875520
    9.271300	8.135359
    8.652349	8.254397
    7.983920	6.609684
    7.836860	9.785238
    7.418535	7.011256
    8.458288	10.095364
    9.387605	9.726911
    8.663951	8.206705
    10.146507	11.698577
    8.937103	10.990924
    11.218687	11.141945
    8.363142	9.106936
    7.877643	7.122922
    9.620978	9.905689
    9.509649	10.773209
    6.748743	6.705385
    9.300919	8.085029
    9.332257	9.818791
    7.898610	8.366643
    9.841914	9.480675
    6.920484	8.959501
    8.544713	9.563136
    8.162266	6.715277
    8.659552	9.282008
    10.673398	13.174824
    9.024000	10.379238
    8.183292	6.647572
    10.544919	10.649602
    7.201266	6.529605
    9.557407	11.096821
    8.304605	6.940929
    9.742855	9.920897
    10.024587	9.645222
    10.002296	9.998940
    8.965876	8.665419
    7.823136	6.949572
    8.125088	7.654065
    6.569589	6.046863
    10.195497	8.689129
    11.730011	10.374221
    8.739105	7.457571
    9.820059	10.278526
    9.547456	10.398198
    8.375072	8.416302
    8.889533	8.308929
    8.861201	9.290408
    12.677687	12.788463
    9.100735	8.620537
    7.728350	6.328219
    7.955373	8.355028
    8.733352	8.645414
    10.257527	11.191813
    9.246413	9.497014
    9.745302	9.642035
    7.785652	8.147621
    7.431673	8.566399
    8.654384	8.466701
    8.475392	6.744677
    9.968440	10.765192
    10.163616	10.806963
    10.238135	10.036636
    9.902889	10.746730
    9.523850	8.749708
    9.214363	9.149178
    9.266040	10.841502
    8.494292	7.770942
    10.821158	10.410192
    8.645888	7.970308
    9.885204	10.098080
    9.084990	10.886349
    9.277874	8.871449
    8.135131	7.137064
    7.917379	9.080522
    9.685586	8.822850
    8.558141	7.848112
    9.502917	10.061255
    6.409004	5.164774
    10.149235	10.579951
    7.847304	8.411351
    8.846930	6.819939
    8.675153	9.411147
    9.476276	9.061508
    11.099184	10.644263
    8.792411	10.379405
    8.400418	7.072706
    8.555713	7.923805
    8.024763	8.426993
    8.642696	10.453412
    7.906117	7.920408
    8.793393	9.722878
    8.280364	7.669854
    9.387766	9.706245
    9.626853	10.762499
    10.163631	10.919007
    9.375543	11.513524
    9.309440	8.575699
    10.055329	10.297255
    8.706241	9.097172
    10.032934	11.951897
    10.812974	11.311435
    10.352603	10.819865
    8.276870	9.055403
    8.397389	7.944434
    9.371741	10.395790
    10.825710	10.144099
    9.158483	11.385382
    10.658639	11.389856
    8.091762	6.631039
    10.734892	10.054598
    11.535880	11.604912
    9.799077	11.371677
    8.478725	9.078455
    9.399902	8.947744
    7.305377	8.144973
    7.613377	6.668798
    10.681308	10.830845
    9.973855	10.004133
    9.369918	7.855433
    8.838223	7.429033
    9.521831	10.623930
    9.724419	10.447452
    8.890224	9.275923
    9.932763	11.589953
    10.839337	9.051250
    8.497708	7.521701
    8.440236	8.705670
    9.063566	9.755744
    8.449647	8.929485
    8.554576	8.063231
    10.348606	10.550718
    5.985254	5.186844
    9.931937	10.175582
    9.854922	9.201393
    9.114580	9.134215
    10.334899	8.543604
    

      

    import matplotlib
    import matplotlib.pyplot as plt
    
    dataMat = loadDataSet('testSet.txt')
    lowDMat, reconMat = pca(dataMat,1)
    print "shape(lowDMat): ",shape(lowDMat)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.scatter(dataMat[:,0].flatten().A[0],dataMat[:,1].flatten().A[0],marker='^',s=90)
    ax.scatter(reconMat[:,0].flatten().A[0],reconMat[:,1].flatten().A[0],marker='o',s=50,c='red')
    plt.show()
    

      

    结果如下图:

     

     参考文献:

    http://www.360doc.com/content/13/1124/02/9482_331688889.shtml

     http://www.docin.com/p-160874280.html

    https://www.zhihu.com/question/54100505/answer/432025686

    转载于:https://www.cnblogs.com/wj-1314/p/8032780.html

    展开全文
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0041 如何实现数据加密与解密算法 27 0042 如何继承父类的方法 27 0043 如何实现函数重载 28 0044 类中多态的应用 28 0045 将函数作为参数进行调用 30 2.3 参数与指针 30 0046 通过指针读写数据 30 ...
  • TCP超时计算是RTOx2,这样连续丢次包就变成RTOx8了,十分恐怖,而KCP启动快速模式后不x2,只是x1.5(实验证明1.5这个值相对比较好),提高了传输速度。 选择性重传 vs 全部重传: TCP丢包时会全部重传从丢的那个...
  • 因此,如何对这些数据进行处理,找到数据之间的内在联系,已成为人们日益关注的问题.传统的主成分分析方法是很受欢迎的处理高维数据的降维工具,但其提取的主成分的元素大都是非零的,这就很难去解释主成分对应的具体特征...
  • 3.5.3 给40亿个不重复的unsigned int的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中? 3.5.4 在一个文件中有10G个整数,乱序排列,要求找出中位数。内存限制为2G。 3.5.5 时分秒针...
  • 实例181 判断输入数据是否符合要求 332 实例182 批量数据保存前的判断 335 实例183 防止数据保存时出现运行时错误 338 4.9 数据删除 340 实例184 删除表格中指定的记录 340 实例185 利用SQL语句删除数据 341 ...
  • 实例181 判断输入数据是否符合要求 332 实例182 批量数据保存前的判断 335 实例183 防止数据保存时出现运行时错误 338 4.9 数据删除 340 实例184 删除表格中指定的记录 340 实例185 利用SQL语句删除数据 341 ...
  • 3.2.4 如果系综相对于自相关是平稳的,一图像的系综自相关矩阵的形式是怎么样的? 154 3.2.5 如何根据一幅图像的矢量表达,从1-D 自相关函数得到其2-D 自相关矩阵? 155 3.2.6 如何能变换图像使其自相关矩阵...
  • 1.1.4Java的个版本 1.1.5编程前的准备工作 1.2安装JDK 1.2.1获取JDK 1.2.2安装JDK步骤 1.2.3安装目录介绍 1.2.4环境变量设置 1.3开发第一个Java程序 1.3.1如何编写源代码 1.3.2如何将源代码编译成.class...
  • 主要研究在不同的细分场景下的控制策略,比如在十字路口如何控制,转线如何控制,在感知数据不可靠时如何尽量安全的控制等等。 7. 车辆检测与跟踪(VehicleDetection and Tracking): 主要关注如何通过激光雷达...
  • java面试题

    2018-01-01 15:35:15
    hibernate的种状态之间如何转换 59 71.6. Hibernate并发机制,并发问题的处理。 59 71.6.1. Hibernate并发机制 59 71.6.2. 并发问题解决方案 59 71.7. Hibernate是如何延迟加载? 60 71.8. Hibernate中怎样实现类...
  • 实例050 对数进行二分查找 3.2 数组的应用 实例051 利用数组统计文字段落数 实例052 利用数组随机抽取幸运观众 实例053 利用二维数组向MSFlexGrid表格添加数据 实例054 利用数组设置MSFlexGrid的表头和列宽 ...
  • asp.net知识库

    2015-06-18 08:45:45
    如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/...
  • 11.9 如何判断回文数字 11.10 小结 第12章 逻辑推理类面试题 12.1 脑筋急转弯 12.1.1 中国有多少辆汽车 12.1.2 下水道的盖子为什么是圆形的 12.1.3 分蛋糕 12.2 逻辑推理 12.2.1 哪个开关控制哪盏灯 12.2.2 戴帽子 ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 142
精华内容 56
热门标签
关键字:

如何判断三组数据相关