网站开发架构文档,常州网站建设最易,网站雪花特效,百度云服务器建设网站01 引言之前发了几篇文章关于矩阵中 特征向量和PCA主元分析的文章#xff0c;大家反响不错。当时并没有涉及到数学运算#xff0c;只是大概讲了讲原理。这篇文章我们一起来一步一步解读PCA的计算过程如何用Python实现PCA分析准备就绪02 第一步#xff1a;数据获取第一步大家反响不错。当时并没有涉及到数学运算只是大概讲了讲原理。这篇文章我们一起来一步一步解读PCA的计算过程如何用Python实现PCA分析准备就绪02 第一步数据获取第一步大量的数据收集是必须的。手边此时并没有数据就通过python自己制造点数据吧。构造数据框架我们的项目计划是 看看 白种人和黄种人的基因差别。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分析。03 数据中心化什么叫数据中心化呢太高大上了其实就是求平均值将所有的数据和平均值联系起来。我们还是用二维数据解释比较顺溜假设数据如下杜撰数据二维数据假设我们有6组数据x轴代表 影响因子1 y轴代表 影响因子2。蓝色小球代表数据紫色小球代表数据平均值。数据中心化就是所有数据 减去 平均值而图像的变化就是将平均值的点(紫色)移动到原点其他数据点跟着移动。数据中心化数据中心化简单吧数据中心化后还有一步是将数据缩放一下。你看哦数据中心化的过程中数据的方差是没有变化的。为了数据比较的方便对数据还需要缩放一下过程很简单。数据缩放所有数据 除以 方差这样最后的数据的方差都变成 1 了。上面的python代码我们创建了100个基因10个人的数据包。总共数据是100 * 10。我们给中间中心化和缩放一下。scaled_data preprocessing.scale(data.T) # 搞定数据缩放04 PCA分析PCA分析线性规划大家还记得吧。线性规划如上图所示我们需要划出一条线使得所有的数据点到达这条线的距离的平方和(红色线段)最小。线性规划为了详细说明线性规划我们拿一个点来说明。当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)。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分析后我们看出主元1占比高达95%。自然是第一主元。05 总结如果大家喜欢我的文章请关注“逃学博士”。感谢StatQuest。“逃学博士”理工科直男一枚在冰天雪地的加拿大攻读工程博士。闲暇之余分享点科学知识和学习干货。