PCA 算法详解

article/2025/10/13 19:08:21

PCA算法步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵在这里插入图片描述
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)image即为降维到k维后的数据

 

实例:
在这里插入图片描述

用PCA方法将这组二维数据其降到一维。
因为这个矩阵的每行已经是零均值,这里我们直接求协方差矩阵:
在这里插入图片描述
然后求其特征值和特征向量。得出结果:
特征值:在这里插入图片描述
特征向量:在这里插入图片描述
其中对应的特征向量分别是一个通解,c1和c2可取任意实数。那么标准化后的特征向量为:
在这里插入图片描述
因此,矩阵P为:
在这里插入图片描述
可以验证协方差矩阵C的对角化:
在这里插入图片描述
最后我们用P的第一行乘以数据矩阵,就得到了降维后的表示:

降维投影结果如下图:

以上内容来自https://www.cnblogs.com/mikewolf2002/p/3429711.html

 

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import KernelPCA
from sklearn.datasets import make_circles
np.random.seed(0)#使得随机数可预测
x, y = make_circles(n_samples = 400, factor = .3, noise = .05)
kpca = KernelPCA(kernel = 'rbf', gamma = 10)
x_kpca = kpca.fit_transform(x)
plt.figure()
plt.subplot(2, 2, 1, aspect = 'equal')
plt.title("original space")
reds = y == 0
blues = y == 1
plt.plot(x[reds, 0], x[reds, 1], "ro")
plt.plot(x[blues, 0], x[blues, 1], "bo")
plt.xlabel("$x_1$")
plt.ylabel("$x_2$")
plt.subplot(2, 2, 3, aspect = 'equal')
plt.plot(x_kpca[reds, 0], x_kpca[reds, 1], "ro")
plt.plot(x_kpca[blues, 0], x_kpca[blues, 1], "bo")
plt.title("Projection by KPCA")
plt.xlabel("1st principal compontent in space induced by $\phi$")
plt.ylabel("2nd component")
plt.subplots_adjust(0.02, 0.10, 0.98, 0.94, 0.04, 0.35)
plt.show()

 

np.random.seed()用法 

(1)  代码中包含np.random.seed()

import numpy as np 
np.random.seed(0)
k = 0
while(k < 4):print(np.random.randn())k += 1

在代码中加入np.random.seed()后,不管该段代码运行多少次,输出结果都一致。

结果为:

1.764052345967664
0.4001572083672233
0.9787379841057392
2.240893199201458

(2) 代码中不包含np.random.seed()

import numpy as np 
k = 0
while(k < 4):print(np.random.randn())k += 1

当代码中不包含np.random.seed()时,代码每次运行,运行结果都不一致。

运行结果可以为:

-0.10321885179355784
0.41059850193837233
0.144043571160878
1.454273506962975

也可以为:

1.8675579901499675
-0.977277879876411
0.9500884175255894
-0.1513572082976979

结论:当我们设置相同的seed,每次生成的随机数相同

            如果不设置seed,则每次会生成不同的随机数

 

 


http://chatgpt.dhexx.cn/article/KqRJc7dZ.shtml

相关文章

PCA原理

PCA 各位&#xff0c;久违了&#xff5e; 什么是PCA&#xff1f; 什么是PCA呢&#xff1f;这是一个问题&#xff0c;什么样的问题&#xff1f;简单而又复杂的问题&#xff0c;简单是因为百度一下就会出现一大堆的解释&#xff0c;复杂是因为它里面蕴含的内容还是很多的&…

python实现PCA降维

本文包括两部分&#xff0c;使用python实现PCA代码及使用sklearn库实现PCA降维&#xff0c;不涉及原理。 总的来说&#xff0c;对n维的数据进行PCA降维达到k维就是&#xff1a; 对原始数据减均值进行归一化处理&#xff1b;求协方差矩阵&#xff1b;求协方差矩阵的特征值和对…

PCA算法

主成分分析&#xff08;Principal components analysis&#xff0c;以下简称PCA&#xff09;是最重要的降维方法之一。 参考&#xff1a;http://www.cnblogs.com/pinard/p/6239403.html PCA的思想 PCA顾名思义&#xff0c;就是找出数据里最主要的方面&#xff0c;用数据里最…

PCA

R语言实现PCA 一次来自男神MR.来的作业PCA读取数据PCA主体部分输出PCA的主要结果&#xff0c;列出主成分分析分析结果利用碎石图来展示PCA结果对component进行一些解释 简略分析利用PCA结果来进行一个排序下面进行聚类分析 一次来自男神MR.来的作业 PCA 读取数据 #读取数据&…

主成分分析(PCA)原理详解

转载请声明出处&#xff1a;http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后&#xff0c;颇有体会。最近在做主成分分析和奇异值分解方面的项目&#xff0c…

PCA详解

本文目录 一、来源及作用存在问题基本作用 二、 基本原理及求解步骤核心思想如何选择投影方向 三、原理分析最大投影方差最小重构代价 四、SVD与PCA的关系 一、来源及作用 存在问题 在我们训练模型的过程中&#xff0c;有时会出现在训练集上误差较小&#xff0c;但到了测试集误…

主成分分析法(PCA)

主成分分析&#xff08;Principal components analysis&#xff0c;以下简称PCA&#xff09;是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA&#xff0c;下面我们就对PCA的原理做一个总结。 目录 …

主成分分析(PCA)方法步骤以及代码详解

主成分分析&#xff08;PCA&#xff09;方法步骤以及代码详解 前言 上一节我们了解到在构建神经网络模型&#xff0c;除了掌握如何搭建神经网络架构&#xff0c;了解参数具体含义&#xff0c;规避风险等方法。第一步是要对采用数据集的详细了解&#xff0c;无需接触任何神经网…

机器学习——PCA降维(我至今为止遇见的最好的博文)

参考文章&#xff1a;https://zhuanlan.zhihu.com/p/77151308 PCA&#xff08;Principal Component Analysis&#xff09; 是一种常见的数据分析方式&#xff0c;常用于高维数据的降维&#xff0c;可用于提取数据的主要特征分量。 PCA 的数学推导可以从最大可分型和最大重构性…

通达OA工作流数据报表二次开发版

此模块除具备工作流——数据报表所有功能外&#xff0c;新加入的功能包括&#xff1a; 1&#xff1a;查询条件自带可查询未完成的流程&#xff1b; 2&#xff1a;查询条件可设置查询所有子流程的字段&#xff1b; 3&#xff1a;报表可显示流程当前处理人&#xff0c;并且点击每…

开发通达OA工作流接口从ERP自动生成OA请款单(图文)

ERP系统很多不带审批系统&#xff0c;即使有审批系统的话应用起来也不那么容易&#xff0c;因为领导一般都是不使用ERP系统的&#xff0c;那么我就用通达OA来完成ERP的单据审批吧&#xff0c;是不是很酷呢&#xff0c;而且还支持移动端app和微信审批。 ERP端的数据发起由ERP方…

OA工作流引擎:作为组织血脉支撑的重要性解析

前面提到协同OA管理平台是以“人和事”为管理对象&#xff0c;但如何把“人和事”通过一定的方法能全部贯通起来呢。就如同一个人&#xff0c;有手、脚、嘴、头脑等各种器官&#xff0c;但如何能把这些器官充分的调动起来&#xff0c;里面最核心的还是人的血液&#xff0c;OA系…

通达OA 工作流运行异常情况的紧急处理(图文)

本文整理自通达OA技术交流群&#xff08;QQ群号&#xff1a;378591362&#xff09;群友交流内容。 一位朋友的工作流设计和运行突然出现故障&#xff0c;显示的数据部分都不正常&#xff0c;如下图&#xff1a; 经过重启所有服务&#xff08;包括缓存服务&#xff09;现象依旧。…

通达OA二次开发 小飞鱼应用OA工作流二次开发智能公文系统(三)(图文)

流程流转完毕后&#xff0c;会自动进行归档&#xff0c;默认存成10年存档目录&#xff0c;并且可以在多个存档年限中进行调整切换。点击流程文号可以直接查看具体的流程表单及执行记录。 如果不需要对部门进行管理时&#xff0c;可以直接使用ajax方式快速将存档年限进行修改切换…

通达OA 工作流流转过程中使用系统自带的提醒功能设置(图文)

在流程流转过程中&#xff0c;可以通过增加步骤的方式来提醒相关人员。其实可以使用系统自带的提醒功能&#xff0c;比如需要在某一步骤提醒流程发起人&#xff0c;就可以在提醒设置下设置提醒发起人&#xff0c;有3个选项可选&#xff0c;其中使用手机短信需要短信猫的支持&am…

通达OA工作流不可编辑

找到表&#xff1a;flow_run 搜索自增长ID流水号&#xff0c;查看该条记录的用户是否ok 找到表&#xff1a;flow_run_prcs 搜索流水号&#xff1a;run_id*** 查看结果的PRCS_ID数字最大的那一条记录的OP_FLAG是否为1&#xff0c;如果不为1则改为1即可。

java oa工作流设计_简易OA漫谈之工作流设计(DB)

1、流程图。 工作流可以做得很复杂&#xff0c;也可以设计的很简单。看下图 看这个图&#xff0c;一个流程图最基础的三部分&#xff1a;流程&#xff0c;步骤&#xff0c;操作。 2、流程模板。 流程图的程序描述就叫流程模板。一个流程模板大概需要的一些属性如下图&#xff1…

OA审批工作流设计器实现

OA审批工作流设计器实现 wflow-web&#x1f440;界面一览工作区面板表单管理表单基本设置表单设计器流程设计器 wflow-web 由 Vue ElementUI 驱动&#xff0c;已开源不断更新中 &#xff0c;主要更新 Gitee &#x1f60b; 码云gitee | github地址 &#x1f449; 在线体验地…

OA工作流引擎设计(纯java开发,不需要额外任何插件引擎)

目录 1 系统概览 2 表单管理 2.1 添加表单 2.2 表单智能设置 2.2.1 单行文本 2.2.2 多行文本 2.2.3 下拉菜单&#xff0c;单选按钮和复选框 2.2.4 日期时间控件 2.2.5 计算控件 2.2.6 会签字段 2.2.7 员工选择框和部门选择框 2.3 表单测试 2.3.1 可选日期、时间、日…

OA 系统工作流引擎 Camunda 实践(1)

【审核人员看清楚再审核&#xff0c;我是把自己公司的案例分析一下&#xff0c; 这哪是广告&#xff1f;&#xff1f;&#xff1f;】 Camunda是Activiti最大的贡献者之一(除Alfresco以外)&#xff0c;同时也是它一个主 要的执行咨询合作伙伴。camunda表示Activiti可能太拘束于…