快捷搜索:  汽车  科技

PCA 分析,手把手教学PCA分析

PCA 分析,手把手教学PCA分析white = ['Wh' str(i) for i in range(1 6)]白种人取5人(Wh1 到 Wh5)和黄种人取5人(Ye1 到 Ye5)。构造数据框架我们的项目计划是 看看 白种人和黄种人的基因差别。gene = ['gene' str(i) for i in range(1 101)] #创造100个基因

01 引言

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

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

  • PCA的计算过程
  • 如何用python实现PCA分析

PCA 分析,手把手教学PCA分析(1)

准备就绪

02 第一步:数据获取

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

PCA 分析,手把手教学PCA分析(2)

构造数据框架

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

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包放入一个数据矩阵中。如下所示:

PCA 分析,手把手教学PCA分析(3)

数据矩阵

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

PCA 分析,手把手教学PCA分析(4)

数据代码

PCA 分析,手把手教学PCA分析(5)

数据

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

03 数据中心化

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

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

PCA 分析,手把手教学PCA分析(6)

杜撰数据

PCA 分析,手把手教学PCA分析(7)

二维数据

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

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

PCA 分析,手把手教学PCA分析(8)

数据中心化

PCA 分析,手把手教学PCA分析(9)

数据中心化

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

你看哦!

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

PCA 分析,手把手教学PCA分析(10)

数据缩放

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

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

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

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

PCA 分析,手把手教学PCA分析(11)

数据缩放

04 PCA分析

PCA 分析,手把手教学PCA分析(12)

PCA分析

线性规划大家还记得吧。

PCA 分析,手把手教学PCA分析(13)

线性规划

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

PCA 分析,手把手教学PCA分析(14)

线性规划

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

当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)

PCA 分析,手把手教学PCA分析(15)

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就是第一主元

分析完毕,大功告成!

PCA 分析,手把手教学PCA分析(16)

PCA

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

PCA 分析,手把手教学PCA分析(17)

05 总结

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

感谢StatQuest。

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

猜您喜欢: