pca图解读_干货!手把手一步一步解读PCA分析,逃学博士尽力了!

01 引言

之前发了几篇文章关于矩阵中 特征向量和PCA主元分析的文章,大家反响不错。当时并没有涉及到数学运算,只是大概讲了讲原理。

这篇文章我们一起来一步一步解读

  • PCA的计算过程
  • 如何用Python实现PCA分析
b5cb36db1ae17483ec92ebf24baeccd8.png

准备就绪

02 第一步:数据获取

第一步,大量的数据收集是必须的。手边此时并没有数据,就通过python自己制造点数据吧。

29778090edc2f194e1b8bd2a7d0f9520.png

构造数据框架

我们的项目计划是 看看 白种人和黄种人的基因差别

gene = ['gene' + str(i) for i in range(1, 101)] #创造100个基因

白种人取5人(Wh1 到 Wh5)和黄种人取5人(Ye1 到 Ye5)

white = ['Wh' + str(i) for i in range(1, 6)]

yellow = ['Ye' + str(i) for i in range(1, 6)]

data = pd.DataFrame(columns = [*white, *yellow], index = gene)

将所有的数据通过pandas包放入一个数据矩阵中。如下所示:

ede5c65c9d41843a16d85045ee5f9923.png

数据矩阵

现在,我们给这个矩阵赋值,完全随机的,不要去管数据严谨性,毕竟全是假设的数据。

d4827d64bc4b198ce976e1dc2230e352.png

数据代码

a18c64551ab271049bdfae7fa1ece3bd.png

数据

搞定数据了,一般数据都是现成的。下一步,咱们开始PCA分析。

03 数据中心化

什么叫数据中心化呢?太高大上了!其实就是求平均值,将所有的数据和平均值联系起来。

我们还是用二维数据解释比较顺溜,假设数据如下:

bd68878df1bb67559cb06873f23d0948.png

杜撰数据

54c0489aa1b732bbdb690d8081f1a8e0.png

二维数据

假设我们有6组数据,x轴代表 影响因子1, y轴代表 影响因子2。蓝色小球代表数据,紫色小球代表数据平均值。

数据中心化,就是所有数据 减去 平均值,而图像的变化就是将平均值的点(紫色)移动到原点,其他数据点跟着移动。

2422d1f95fc66901e8cb2b34aa556fb0.png

数据中心化

322d3a7fc2f4164d77f6456e62ea6e06.png

数据中心化

简单吧!数据中心化后还有一步,是将数据缩放一下。

你看哦!

数据中心化的过程中,数据的方差是没有变化的。为了数据比较的方便,对数据还需要缩放一下,过程很简单。

a9ae9dc06d7c42d6d66ed04fde34fd3b.png

数据缩放

所有数据 除以 方差,这样最后的数据的方差都变成 1 了。

上面的python代码我们创建了100个基因,10个人的数据包。总共数据是100 * 10。

我们给中间中心化和缩放一下。

scaled_data = preprocessing.scale(data.T) # 搞定!

4e7915ddc89dd15a4ef6ecf81cadae84.png

数据缩放

04 PCA分析

52654f4c39d0de740b547cbe51904a1a.png

PCA分析

线性规划大家还记得吧。

d9e6f25d5b180ef0e2b5297613dfda94.gif

线性规划

如上图所示,我们需要划出一条线使得所有的数据点到达这条线的距离的平方和(红色线段)最小。

ab8e736ce34daee8e8e2adfdf86050d2.png

线性规划

为了详细说明线性规划,我们拿一个点来说明。

当B是无数数据点中的一个,AC(绿线)是一条最匹配的直线。那么我们需要保证:

  • B到AC的距离,BC的长度的平方和最小;
  • 或者C到A的距离平方和最大(勾股定理可证),两者是等效的。

所有数据点在主元坐标轴上的投射点到原点的距离(如上图中AC)的平方和叫做 Sum of Squared Distances (SSD)

主元1 上的投射点的 Sum of Squared Distances 就是 主元1的特征值(Eigenvalue),可以参见我之前的文章。

主元2上的投射点的Sum of Squared Distances 就是 主元2的特征值(Eigenvalue)

162a20d9d38706bc67771293573daa14.png

Sum of Squared Distances

我们注意到上图中最后一列是Variation。这是通过:

SSD / (数据个数 - 1)求得的。

Variation有什么用的?

主元1的Variation是2.20,主元2的Variation是0.20。那么一共是2.2 + 0.2 = 2.4。

那么,主元1占有:2.2 / 2.4 = 91.5%

主元2占有:0.2 / 2.4 = 8.5%

也就是说,PCA分析后,主元1保留了91.5%的原始数据信息,占比比主元2大的多。那么,主元1就是第一主元

分析完毕,大功告成!

f9b4d4ed47c44ffcd944c534eed32049.png

PCA

对于上述数据做PCA分析后,我们看出主元1占比高达95%。自然是第一主元。

7d1237201707c6b5ef98b8d132b365ba.png

05 总结

如果大家喜欢我的文章,请关注“逃学博士”。

感谢StatQuest。

“逃学博士”:理工科直男一枚,在冰天雪地的加拿大攻读工程博士。闲暇之余分享点科学知识和学习干货。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——二叉树根节点到特定节点路径(C语言版)

摘自:数据结构——二叉树根节点到特定节点路径(C语言版) 作者:正弦定理 发布时间:2020-12-10 21:09:43 网址:https://blog.csdn.net/chinesekobe/article/details/110991771 二叉树——根节点到特定节点路径…

实用插件_精选 10 个非常实用的 VS Code 插件

来源:Daan原文:https://medium.com/better-programming/10-extremely-helpful-visual-studio-code-plugins-for-programmers-c8520a3dc4b8无论你是经验丰富的开发人员还是刚刚开始第一份工作的初级开发人员,你都会想让自己的开发工作尽可能轻…

数据结构——计算节点个数和二叉树高度(C语言版)

摘自:数据结构——计算节点个数和二叉树高度(C语言版) 作者:正弦定理 发布时间:2020-12-12 23:27:09 网址:https://blog.csdn.net/chinesekobe/article/details/111086664 数据结构——计算节点个数、二叉树…

写入接口c语言_PYNQ: 使用CFFI嵌入C语言

未经私信同意禁止转载!前言CFFI是连接Python与c的桥梁,可实现在Python中调用c文件。CFFI为c语言的外部接口,在Python中使用该接口可以实现在Python中使用外部c文件的数据结构及函数。Python运行比较低,尤其是操作字节流的时候&…

Unity 协程原理探究与实现

目录 一、介绍二、迭代器三、原理四、总结一、介绍 协程Coroutine在Unity中一直扮演者重要的角色。可以实现简单的计时器、将耗时的操作拆分成几个步骤分散在每一帧去运行等等,用起来很是方便。 但是,在使用的过程中有没有思考过协程是怎么实现的&#x…

数据结构—无向图创建邻接矩阵、深度优先遍历和广度优先遍历(C语言版)

摘自:数据结构—无向图创建邻接矩阵、深度优先遍历和广度优先遍历(C语言版) 作者:正弦定理 发布时间:2020-12-19 17:25:49 网址:https://blog.csdn.net/zhuguanlin121/article/details/118436142 无向图创建…

android 图片识别白色区域进行裁剪_【研途技能贴】| 4款好用的图片处理软件推荐...

要考研啦4款好用的图片处理软件推荐01入门级作图神器——图怪兽一款会打字就能用的在线编辑器,80万模板任君挑选~无论是基础的旋转裁剪,还是难度进阶的抠图拼图,在这款软件里,你可以分分钟做出高大上的好图!Use tips①…

Android 开发(一)项目概况

2019独角兽企业重金招聘Python工程师标准>>> 开始写博客,自己是边学习边做开发,将自己开发的过程记录下来,能够对学习的知识进行梳理,也可以对学习做个总结。 首先是对项目的介绍: 做一个功能全面的软件&am…

github和dockerhub制作k8s镜像

一、前言: 对于初学者来说,k8s的镜像问题往往会将他们拦在学习门外,今天就白话一下k8s众多镜像的获取方式,前提只有一个:你能上百度。 二、github和dockerhub账号准备,这个没任何门槛,只要知道这…

数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)

摘自:数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版) 作者:正弦定理 发布时间:2020-12-22 20:55:12 网址:https://blog.csdn.net/chinesekobe/article/details/111409503 数据结构——无向图…

C++轮子队-第三周(需求改进原型设计)

需求改进&原型设计 一.需求完善 (一)系统功能(补充) 图形界面(图片如下图所示:) 根据需求与组内讨论结果,现归纳图形界面方面需要的设计与相应功能: 数据-图形界面中…

Linux 从头学 01:CPU 是如何执行一条指令的?

摘自:Linux 从头学 01:CPU 是如何执行一条指令的? 作者:IOT物联网小镇 发布时间:2021-07-02 08:22:43 网址:https://blog.csdn.net/jchen1218/article/details/118404217?utm_sourceapp&app_version4.…

积极拥抱.NET Core开源社区

潘正磊在上海的Tech Summit 2018 大会上给我们的.NET Core以及开源情况带来了最新信息。 .Net Core 开源后取得了更加快速的发展,目前越活跃用户高达400万人,每月新增开发者45万,在 GitHub 上的月度增长达到15%。目前有来自超过3,700家企业的…

内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!(内附超全思维导图)

摘自:内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!(内附超全思维导图) 作者:程序员cxuan 发布时间:2020-03-09 13:43:11 网址&#xff1…

过期时间_2020年最新航空里程过期时间及避免过期方法总结

【2020.2 更新】近几年来主要有如下变化:UA 里程永不过期了,Southwest 里程永不过期了,Asia Miles 里程可以通过里程变动续命了,Flying Blue 里程变成24个月过期了,AV 里程变成12个月过期了。各大航空的里程过期政策辛…

Spring Boot 5:应用程序启动时初始化资源

需求:应用程序启动后,初始化基础数据、加密证书等操作。 可以使用CommandLineRunner接口来实现,在SpringBoot.run()之后完成资源的初始化工作。 注意:多个Runner需要顺序启动的话,可以使用Order注解 package sun.flowe…

中的 终端报错怎么看原因_《琅琊榜》中太子被封禁,高湛引皇上看桂花的真正原因是什么?...

《琅琊榜》中,高湛是一个非常经典的角色,他比夏江更懂梁帝的心,或者说,知梁帝者,莫过于高湛。当然,若不是如此,高湛也不能在梁帝身边待了那么些年。梁帝生病,喝下静妃娘娘配制的甜汤…

STM32安装Keil5、芯片支持包、startup启动文件(启动过程、冷热启动)、建立工程、ST-LINK烧写步骤

参考:stm32入门之keil5的安装以及第一个工程的建立 作者:SKY丶丿平才 发布时间: 2020-12-06 17:08:30 网址:https://blog.csdn.net/weixin_48264057/article/details/110734596 目录使用的STM32F103C8T6一、Keil5的下载与安装1.下…

深度学习都是非凸问题_神经网络的损失函数为什么是非凸的?

Ian Goodfellow曾经给在quora回答过,以下是原文:There are various ways to test for convexity.One is to just plot a cross-section of the function and look at it. If it has a non-convex shape, you don’t need to write a proof; you have dis…

针对移动互联网应用的网络建设和优化

为什么80%的码农都做不了架构师?>>> 针对移动互联网应用的网络建设和优化 截至2013年3月,移动互联网的人均上网时长和PC互联网相比差距已经扩大了29%.PC互联网向移动端迁移的趋势进一步凸显.小米是一家专注于iPhone和Android等新一代智能手机软件…