PCA算法来简化数据

python机器学习:PCA数据降维 PCA算法作为一种无监督的学习算法,主要用于数据降维、有损数据压缩、特征抽取、数据可视化。 一、PCA算法流程 • 导入数据集X; • 按列计算数据集X的均值Xmean,然后做差得到X1=X-Xmean; • 对得到的新矩阵X1作协方差,得到conv; • 计算协方差conv对应的特征值和特征向量; • 然后对得到的特征值排... 阅读详情

1.降维技术

        在日常处理数据的时候,数据往往是好多维的,也就是一条数据往往有好多个特征,导致数据处理和分析起来比较麻烦,但是这些特征绝大部分都是非主要的,对数据的处理分析过程起到的作用特别少,但是却大大增加了数据处理的复杂度,所以我们就需要对数据进行降维处理,将多维度的数据减低到适当的低维度,从而达到对数据进行简化的目的。对数据进行简化有如下好处:

  1. 使得数据集更易于使用;
  2. 降低很多算法的计算开销;
  3. 去除噪声;
  4. 使得结果更易懂。

        常用的降维技术有:主成分分析(Principal Component Analysis, PCA)、因子分析(Factor Analysis)、独立成分分析(Independent Componenet Analysis,ICA)我们这篇文章主要介绍PCA。

注意:

        我个人是这样理解降维的:所谓的降维,并不是说去掉一些特征,保留一些主要的特征值,然后达到简化数据的目的,而是将数据矩阵按照一定的矩阵变换方式,变换到更低维度的数据形式。变换的方式就是保留原数据矩阵主要的变换方向,这些主要的变换方向决定了原始数据大部分的变化形式,如90%,而这些主要的变换方向可能只占所有变换方向的10%,甚至更少。假设原来是100维,主要的变化方向是10维,那么我们只取这10维的变化,将原来的数据进行降维,然后就将原来的数据降到了10维,数据就简化了好多。

        理解上面的一段话,需要一定的线性代数矩阵的一些基础知识,在下面的PAC算法中,我会通过对特征值,以及特征向量的简单介绍来帮助理解,如果需要更深一步理解则需要自行了解相关的基础知识,建议从特征值和特征向量了解起。文章后面我也会给出几个链接,方便大家更深一步了解。

2.PCA

        本来降维就是一个特别抽象的概念,用画图来理解的话,虽然直观,但是可能也会限制自己的一些想象,所以我不赞成用画图去理解降维的概念。我们先从特征值和特征向量说起。

                                                               

        式1是特征值和特征向量的定义式(这里的特征只单单是相对于A矩阵的特征,和原始数据中的特征没有关系),其中|A|≠0,A是方阵,x是一个向量,也就是特征向量,λ是一个常数,是该特征向量对应的特征值。所以式1中,Ax就可以理解成A沿x方向的变化等于向量x乘以一个常数,这里的x相当于一个单位向量,也就是x变化的一个基,而λ也可以理解为A在x上的一个变化量。

        我们也知道一个m×m的方阵,会有m个线性无关的特征向量,对应有m个特征值,我觉得也可以理解为m个变化的向量基。所以对于方阵A我们可以求解其所有的特征值以及对应的特征向量,然后按照特征值倒序排列,就可以看到排列到最前面的几个λ,往往最前面的几个λ和可以占到多有λ和的90%以上,即前几个λ决定了A的主要变化方向,所以我们就只考虑这些个变换方向上的变化即可。

 

        上面我们对数据进行了降维,只保留了主要的变化方向(维度),也就是说这些维度的变化对数据差异性比较大,反过来也就是说我们也更容易通过这些维度的数据对其进行分类。具体怎么做呢?我们通过数据集的协方差矩阵再加上前面说的特征值分析,我们就可以对数据进行降维,求得这些主成分的值。协方差的计算公式如下:

                                                          

        协方差是衡量特征和特征之间相关性的计算方式,如果有n个特征,那么就会得到一个n×n的一个方阵,这个方阵是一个对角矩阵。一旦得到了协方差矩阵的特征向量,我们就可以保留最大的N(不是方阵的n,只是单纯的最大个前N个数)个值。这些特征向量也给出了N个最重要特征的真实结构,我们可以通过将数据乘上这N个特征向量而将它转换到新的空间。

        注:协方差的特征向量都是正交的,这一点很重要。即这些向量都不能用其他向量表示,从侧面表示这些向量都表示不同的方向,就像我们熟悉的三维坐标中,x,y,z轴,可以表示三维中的任一点,但是他们之间却不能相互表示。

        下面给出PCA算法的基本步骤:

  1. 计算原始数据中每个维度的平均值
  2. 通过平均值计算协方差矩阵
  3. 计算协方差矩阵的特征值和特征向量
  4. 将特征值从大到小排列
  5. 保留最上面的N个特征值,及其对应的特征向量
  6. 将原始数据转换乘以上述N个特征向量构建的新空间中。

3.总结

        上面的一些思考主要是我对PCA降维算法的一些理解,实际上结合具体的例子看更好,下面给出个带有实例的博客,以供更加详细的理解这个PCA原理。

        思考:对于数据降维之后,我们可以对降维之后的数据进行处理,分类什么的,更加方便。我觉得具体测试以及分类的时候,也是要先将待测的数据降维,然后进行分类。个人理解,还没看过一个完整的例子。

        看别人写的,感觉还是别人写的更详细:

        PCA及相关实例:https://blog.youkuaiyun.com/u012421852/article/details/80458340

        特征值及特征向量:https://blog.youkuaiyun.com/qq_32742009/article/details/82217051

 

主成分分析(PCA)原理详解 “微信公众号”本文同步更新在我的微信公众号里,地址:https://mp.weixin.qq.com/s/Xt1vLQfB20rTmtLjiLsmww本文同步更新在我的知乎专栏里面:主成分分析(PCA)原理详解 - Microstrong的文章 - 知乎https://zhuanlan.zhihu.com/p/377770741.相关背景在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观... 阅读详情

相关推荐

5、特征选择:简化数据,提升模型性能

本文详细介绍了特征选择的基本原理、常用方法及其在不同领域的应用。内容涵盖了特征选择的定义与任务,粗糙集理论的应用,过滤式、包裹式和嵌入式三种主要特征选择方法,并讨论了高维数据、噪声数据和特征冗余的优化策略。此外,还展示了特征选择在文本分类、图像分类、医疗影像分析和财务数据分析中的实际应用案例,帮助读者全面理解如何通过特征选择提升模型性能和可解释性。

g9h0i1的博客 106

大数据中简化数据的几种方式

大数据处理中,数据量是很庞大的,如果简化数据,便于后期处理,是一项基础工作。 下面介绍,可以采用的几种方法。 1、主成分分析。根据事先指定的信息量(一般是方差最大的是第一主成分),确定主成分分析的层级。 2、SVD(奇异值分解)。 优势:简化数据,去除噪声,提高算法结果。     在推荐系统的相似度矩阵计算过程中,能够通过SVD从高维降到低维,减少计算量,保障推荐的效果。 作用

qq_23617681的博客 3694

CTF——流量分析题型整理总结

我见过的流量分析类型的题目总结: 一,ping 报文信息 (icmp协议) 二,上传/下载文件(蓝牙obex,http,难:文件的分段上传/下载) 三,sql注入攻击 四,访问特定的加密解密网站(md5,base64) 五,后台扫描+弱密码爆破+菜刀 六,usb流量分析 七,WiFi无线密码破解 八,根据一组流量包了解黑客的具体行为 例题: 一,ping 报文信息 (icm...

小锤队长的博客 5万+

机器学习实战—利用PCA来简化数据

一、降维技术 在低维下,数据更容易处理。 对数据简化有如下原因: 1、使得数据集更易使用。 2、降低很多算法的计算开销。 3.去除噪声。 4.使得结果更易懂。 第一种降维的方法是主成分分析(PCA),在PCA中,数据从原来的坐标系中转换到了新的坐标系,新坐标系的选择由数据本身决定。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方...

zoinsung_lee的博客 997

基于PLC的立体车库控制系统设计

本文介绍了基于西门子S7-1511-1PN PLC和KTP700 Basic PN HMI的立体堆垛式停车场自动化控制系统。系统通过PLC逻辑控制滑台运动,配合传感器实现车辆存取自动化,包含初始化、入库、出库和安全保护程序。程序采用模块化设计,分为安全互锁、动画显示、模式切换等六个功能模块,运用边沿触发、定时器和多级联锁确保安全。HMI界面提供模式切换、车位选择、状态显示和手动控制功能。该系统具有模块化、安全性和可扩展性特点,可应用于多车位立体停车场场景。

sxs3030787796的博客 1260

Python实战:用MNE-Python从脑电数据中提取P300成分(附完整代码)

本文提供了一份使用MNE-Python从脑电数据中提取P300成分的完整实战指南。通过详细的代码示例,系统讲解了从环境搭建、数据加载、预处理(滤波、分段、伪迹剔除)到P300波形提取、可视化与参数量化的全流程。重点介绍了如何利用零相位滤波和叠加平均技术,从EEG信号中精准分离出反映认知加工的P300事件相关电位,适用于脑机接口与认知神经科学研究。

weixin_29240343的博客 338

降维算法PCA:如何用更少的特征表示数据?

本文围绕PCA降维算法展开。核心是通过线性变换,按协方差矩阵特征向量确定主成分实现降维。关键步骤有数据标准化、算协方差矩阵、特征值分解等。创新点在于无监督地减少特征数保留信息。应用于数据可视化、压缩、特征提取和异常检测。优点是简单、可压缩数据等,缺点是线性变换、物理解释难等,能提升数据处理与分析效率。

专注技术分享 942

(5)ModalAI VOXL2

Ardupilot官网关于《Non-GPS navigation》的翻译 —《(5) ModalAI VOXL2》。

无人机开发(开源Ardupilot) 1万+

利用PCA来简化数据

题外话:之前学习的时候总是喜欢手写笔记,因为喜欢自己的字(自恋脸,溜了溜了……)但是因为只有自己看所以记得乱乱的,昨天写完了人生中的第一篇博客,早上起来无意中发现居然有好几十个人浏览过,心里感觉很开心 ,以后会经常来csdn哒! 一.降维技术 先来了解下什么是降维技术,搞过机器学习的小伙伴都知道这个词,我说说自己的理解,比如说找男朋友,身高、体重、长相、学历、人品、性格、家境、户籍、职业、星座...

weixin_38161903的博客 551

Linux | Ubuntu18.04安装RTX 4060显卡驱动完整教程

本节详细介绍了如何在ubuntu18系统安装4060显卡的驱动。

九七的博客 5159

基于 OpenCVSharp 的晶圆缺口自动检测与旋正方案

在半导体制造过程中,晶圆(Wafer)需要精确定位才能进行后续加工。每个晶圆边缘都有一个特定的缺口,这个缺口就像 "箭头" 一样,帮助机器确定晶圆的方向。我们的任务就是通过摄像头拍摄的图片,自动找到这个缺口的位置,计算出需要旋转多少角度才能让晶圆对准正确方向。简单来说,这个技术就像给晶圆 "找方向",确保它在生产线上始终保持正确的姿态。

品质生活,极致编程。 1211

机器学习算法面试—口述(6):数据的简化(PCA、SVD)

这个系列是为了应对找工作面试时面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此 算法的常见面问题 一、PCA(主成分分析)   PCA是一种降维技术,其做法是—寻找最小均方意义下,最能代表原始数据的投影方法! 在PCA中数据从原来的坐标系转换到新的坐标系中去,新坐标系的选择是由数据决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的

六道的专栏 3405

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟卷1及答案解析)

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟卷1及答案解析)

王老师青少年编程 2023

pca算法python_PCA算法和python实现

第十三章利用PCA来简化数据一.降维技术当数据的特征很多的时候,我们把一个特征看做是一维的话,我们数据就有很高的维度。高维数据会带来计算困难等一系列的问题,因此我们需要进行降维。降维的好处有很多,比如:降低算法开销,让数据更加便于使用,去燥,数据更易于显示等等。目前的降维技术主要有三种:第一种主成分分析(PCA),也就是本章介绍的内容,它只保留方差方向最大的若干个特征;第二种是因子分析,这种方法...

weixin_39801158的博客 643

【RT-DETR涨点改进】全网独家首发、特征融合改进篇 | AAAI 2026 | 引入CDEM交叉动态增强模块,双向引导和融合,在低光图像增强中有效提升了图像的亮度,提升小目标和暗目标的检测准确率

本文提出了一种基于CDEM(交叉动态增强模块)改进的rtdetr网络模型,有效提升了在低光和复杂环境下的目标检测性能。CDEM模块通过动态增强亮度与色彩特征,改善图像输入质量,增强细节和对比度。该模块具有轻量级结构,易于集成到现有模型中,能够显著提升小目标和暗目标的检测准确率与鲁棒性。文章详细介绍了CDEM模块的结构原理、实现方法,并提供了完整的代码实现和配置指南,包括三种改进版本的YAML配置文件。实验结果表明,该方法在图像增强和目标检测任务中均取得了优异性能。

Ai缝合怪、助力小伙伴高效发论文 142

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PCA算法理解

其实PCA算法与SVD算法目标是一致的,就是简化数据,去噪,PCA有个缺点,可能会缺少重要信息。 PCA有一个核心思想: 方差最大的方向表示数据中最重要的信息。所以PCA算法是在原数据上从新建立一个坐标,新坐标是按照方差最大的方向上建立。 程序上是 1. 需要数据归一化 2. 计算协方差 3. 计算协方差的特征值和特征向量(新的坐标轴) ...

我的博客 598

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

机器学习实战---读书笔记:第13章 利用PCA来简化数据

#!/usr/bin/env python # encoding: utf-8 import matplotlib.pyplot as plt from numpy import * ''' 机器学习实战---读书笔记:第13章 利用PCA来简化数据 关键: 1 降维技术 降维作用: 使数据集更容易使用,降低算法开销,去除噪声 主要关注未标注数据上的降维技术。 降维方法: 1) 主成分分...

qingyuanluofeng的专栏 658

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

PCA算法

PCA的目标是找到一个变换,将数据投影到一个新的空间中,这个新空间的每个维度(主成分)都与原始数据的维度正交。PCA算法的原理是找到一个变换矩阵,将原始数据投影到新的空间中,新空间的每个维度(主成分)都与原始数据的维度正交,并且第一个主成分具有最大的方差(即能解释数据中最多的变异性),第二个主成分具有第二大的方差,且与第一个主成分正交,依此类推。PCA是一种数据降维模型,它的基本模型是通过线性变换将数据转换到新的空间,这个新空间的坐标轴(主成分)按照方差的大小排序,方差越大的主成分能保留更多的数据信息。

qq_25368751的博客 1277

PCA算法原理及python实现

【原理】PCA算法原理 1.PCA算法 PCA(principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据压缩算法。在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息。第一个新坐标轴选择的是原始数据中方差最大的方法,第二个新坐标轴选择的是与第一个新坐标轴正交且方差次大的方向。重复该过程,重复次数为原始数据的特征维数。 通过这种方式获得的新的坐标系,我们发现..

weixin_56273009的博客 8678

PCA算法介绍及源码实现

PCA(principal components analysis)即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。在统计学中,主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用于减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。

夏沫の梦的博客 5559

基于特征值分解协方差矩阵实现PCA降维

感谢原文作者,博客写的非常好,我这里将我需要的部分提取出来记录一下。 多变量的大数据集可以为研究提供丰富的信息,但是处理起来复杂度太高,并且其中一些数据之间具有相关性,如果将这些大量的具有相关性的数据,用少量的各自独立的数据来表示,将会降低复杂度,并且不丢失有用的信息。也就是降维。降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。 ...

qq_32172681的博客 1868

sklearn.decomposition.PCA算法解析与应用

目录算法功能算法参数方法实例 鸢尾花数据分类演示 算法功能 资源来源于官网 主成分分析(PCA) 就是在尽可能保留数据特征的情况下,降低数据的维度。 这是怎么实现的呢? 在sklearn.decomposition.PCA中,使用的是SVD(奇异值分解)的方法进行降维。 SVD的基本思想: 设有一个m×n的矩阵A(设m<n),可以将它分解为Am×n=Um×m· Λ ·Vn×n。其中U和V是正交矩阵,Λ是对角矩阵。这是所有矩阵都具有的性质。 因此可以将A分解A=λ1UV+λ2UV+…+λmUV=A1+A

weixin_43690010的博客 5875

PCA降维

1.降维的作用 ①数据在低维下更容易处理、更容易使用; ②相关特征,特别是重要特征更能在数据中明确的显示出来;如果只有两维或者三维的话,更便于可视化展示; ③去除数据噪声 ④降低算法开销 2.降维通俗点的解释 一些高维度的数据,比如淘宝交易数据,为便于解释降维作用,我们在这假设有下单数,付款数,商品类别,售价四个维度,数据量上百万条,对于下单数和付款数,我们可以认为两者是线性相关的,即知道下单数,...

小力子的博客 362

深入理解主成分分析(PCA):原理、算法与应用

本文深入剖析主成分分析(PCA)技术。介绍其通过正交变换简化数据维度的核心原理,详细推导基于最小投影距离和最大投影方差的算法过程,总结算法流程步骤。全面分析PCA的优缺点,并对比其与KPCA的差异。同时阐述降维的必要性和目的,助力读者系统掌握PCA技术及其在数据处理中的应用。

2501_90186640的博客 3301

机器学习实战-利用PCA来简化数据(降维)

一 理论        降维是对数据高维度特征的一种预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为了应用非常广泛的数据预处理方法。   降维具有如下一些优点: (1)使得数据集更易使用 (2)降低算法的计算开销 (3)去除噪声 (...

大数据ING的博客 1405

PCL点云库——PCA粗配准

PCA配准   主成分分析法( Principal Component Analysis,简称PCA)是使数据简化的算法,通过揭露数据内部的主要分布方向,减少了数据集的维数,从而保留了点云集中贡献最大的特征,更好地解释数据的变化规律。PCA 算法进行点云配准是以主方向为依据,根据两点云的主方向计算出对应的三个旋转和三个平移量,可大致对齐两点云数据。    #include <pcl/visualization/cloud_viewer.h> #include <pcl/io/pcd_io.

fei_12138的博客 8755
上一篇: FP-growth算法来高效发现频繁集
下一篇: SVD算法来简化数据
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值