pca

数据降维方法小结

帅比萌擦擦* 提交于 2020-02-10 08:40:01
原文:http://blog.csdn.net/yujianmin1990/article/details/48223001  数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种 从高维特征空间向低纬特征空间映射 的思路。 数据降维的目的   数据降维,直观地好处是维度降低了,便于计算和可视化,其 更深层次的意义在于有效信息的提取综合及无用信息的摈弃 。 数据降维的方法   主要的方法是线性映射和非线性映射方法两大类。 线性映射    线性映射方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis) PCA方法简介   主成分分析的 思想 ,就是线性代数里面的K-L变换,就是 在均方误差准则下失真最小的一种变换 。是将原空间变换到特征向量空间内,数学表示为 A x = λ x 。   特征向量和特征值的意义:分别表示不同频率及其幅度。    特征向量和特征值的直白理解: 想在特征空间内找到某个向量 x ,使得其满足 A x = λ x 。这个式子可以这样理解, A 是空间内的运动, x 经过运动 A 后,保持方向不变(仍是 x 的方向),只是大小伸缩了 λ 倍。这样我们找到了 k

数据降维PCA

别说谁变了你拦得住时间么 提交于 2020-02-08 03:47:24
简介 @ 维基百科 在多元统计分析中,主成分分析(英语:Principal components analysis,PCA)是一种统计分析、简化数据集的方法。它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分(Principal Components)。具体地,主成分可以看做一个线性方程,其包含一系列线性系数来指示投影方向。PCA对原始数据的正则化或预处理敏感(相对缩放)。 本文内容皆源自 Andrew Ng 目的 1.实现数据压缩 2.实现数据在2D或3D中可视化 算法 PCA(主成分分析) 步骤 1.数据预处理 采用归一化方法,是的均值为0,方差为1。 步骤,1.均值为0 2.方差为1 \(x_j^{(i)}={x_j-\mu}\frac{s_j} s_j为标准差即为样本中第j维数据的标准差\) 2.协方差矩阵 @ 维基百科 z即使PCA特征缩放后的结果。 3.选择适当的参数K \(其中x_apporx^{(i)}为x^{(i)}在压缩向量上的投影。\) S:对角矩阵,对角元素是Sigma的奇异值,非负且按降序排列。 建议 一般在机器学习中,先判断PCA处理可以给你的学习带来什么,做决定。 一般先在原数据上做学习处理,若学习速度太慢,再考虑使用PCA。 一般防止过拟合不采用PCA,而是加上正则化项。 来源:

PCA算法步骤

允我心安 提交于 2020-02-04 00:16:43
步骤一:数据中心化——去均值,根据需要,有的需要归一化——Normalized; 步骤二:求解协方差矩阵; 步骤三:利用特征值分解/奇异值分解 求解特征值以及特征向量; 步骤四:利用特征向量构造投影矩阵; 步骤五:利用投影矩阵,得出降维的数据。 来源: CSDN 作者: sunshineywz 链接: https://blog.csdn.net/sunshineywz/article/details/102984458

How can scikit-learning perform PCA on sparse data in libsvm format?

空扰寡人 提交于 2020-01-28 06:47:45
问题 I am using scikit-learning to do some dimension reduce task. My training/test data is in the libsvm format. It is a large sparse matrix in half million columns. I use load_svmlight_file function load the data, and by using SparsePCA, the scikit-learning throw out an exception of the input data error. How to fix it? 回答1: Sparse PCA is an algorithm for finding a sparse decomposition (the components have a sparsity constraint) on dense data. If you want to do vanilla PCA on sparse data you

sklearn中的PCA模型

蹲街弑〆低调 提交于 2020-01-25 01:01:37
sklearn中提供了较为丰富的PCA模型来解决数据的降维问题,其包括: (1)PCA:最原始的PCA算法; (2)TruncatedSVD:原始数据不做中心化处理的PCA算法,可用于文本数据(TF-IDF处理后)的隐藏语义分析(LSA); (3)SparsePCA:添加L1正则化处理后的PCA算法,用最小角回归算法求解,可在一定程度上解决数据噪声的问题,进一步降低分解后的数据维度; (4)MiniBatchSparsePCA:添加L1正则化处理后PCA算法,基于小批量数据的PCA算法。 (5)IncrementalPCA:增量学习的PCA算法,通过partial_fit解决数据量过大情况下内存限制的问题。 (6)KernelPCA:样本协方差矩阵中的元素均为样本内积,因此可利用核技巧,将其它应用到非线性空间上。 本文仅详细介绍最原始的PCA算法。 1. 模型的主要参数 模型参数 Parameter含义 备注 n_components 主成分数 用于空值分解后的目标维度,其可选值包括:1.整数,指定具体的值;2. 百分比,分解后的维度包含的信息量(方差)必须大于原始信息量*百分比;3. 'mle'采用极大似然估计法,预估目标维度;4.None, 默认为数据特征数目和数据行数中最小的那个值,注意当solver为'arpack',还需在上述值基础上减1; whiten 白化 布尔值

PCA Implementation in Java [closed]

人走茶凉 提交于 2020-01-22 09:53:48
问题 Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 4 months ago . I need implementation of PCA in Java. I am interested in finding something that's well documented, practical and easy to use. Any recommendations? 回答1: There are now a number of Principal Component Analysis implementations for Java. Apache Spark: https://spark.apache.org/docs/2.1.0/mllib-dimensionality

PCA的一些理解

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-20 18:11:30
1. PCA的原理理解 PCA 要求原始数据经过新的线性变换,尽可能保留原始数据大部分的信息;PCA的变化要求,找到一组新的基(基之间内积为0,且为了计算方便,这组基经过标准化,即为标准正交基),进行变换,将原始数据投影到新的基上,进行变换,为了保留原始数据大部分的信息,因此希望投影尽可能分散;故越分散,保留原始数据信息越多; 与此同时,越分散,导致这个主成分内部,方差越大;因此方差越大的主成分保留原始数据信息越多,故根据方差从大到小选出第一大主成分、第二大主成分,。。。。。。 2.PCA构建协方差矩阵、相关系数矩阵? 3.PCA最后的形式,步骤 总结一下PCA的算法步骤: 设有m条n维数据。 1)将原始数据按列组成n行m列矩阵X 2)将X的每一l列(代表一个属性字段)进行零均值化,即减去这一列的均值 3)求出协方差矩阵 4)求出协方差矩阵的特征值及对应的特征向量 5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P 6)即为降维到k维后的数据 来源: CSDN 作者: 滴水-石穿 链接: https://blog.csdn.net/sinat_34971932/article/details/103381603

sklearn PCA与LDA对比

£可爱£侵袭症+ 提交于 2020-01-20 04:22:09
接 上一篇 :这次与LDA进行对比,看下效果如何。 1用sklearn产生的随机10个类别数据 初始特征为30个,由于下面条件限制,只能设置小于9的数,因此选择了8 n_components <= min(n_features, n_classes - 1) 然后再经t-SNE显示,效果令人失望至极!!!搞不懂为啥子 X origin shape, (1000, 30) after LDA,X shape, (1000, 8) 所以我不知道LDA到底在干啥子,啥几把玩意,简直是垃圾。 同样将PCA后的维度设置为8,发现也是垃圾,卧槽。与上图基本一样,哪里出错了??? 可将原始数据直接t-SNE看看结果,发现与上图类似,卧槽,这就有鬼了。猜测是原始数据有问题。 这个数据生成的函数有毛病,暂时忽略这个数据。 2依旧用MNIST数据【数据来源sklearn】 但这个有警告产生,意思是行列式和为近乎0,接近于奇异矩阵,这样的矩阵可能求逆的结果不靠谱 Warning (from warnings module): File "D:\python\lib\site-packages\sklearn\discriminant_analysis.py", line 388 warnings.warn("Variables are collinear.") UserWarning:

模式识别系列之特征降维(1)主成分分析

半城伤御伤魂 提交于 2020-01-19 11:54:20
目录 1-PCA概述 2-理论推导 2.1-向量的内积与投影: 2.2-基的表示与变换: 2.3-协方差矩阵: 2.4-PCA推导 3-几何理解 4-计算过程 4.1-样本数小于特征数时的计算 4.2-matlab代码 5-实例 参考 1-PCA概述 主成分分析是一种常用的降维方法,它不使用标签信息,通过将原始坐标空间的数据( d × 1 d\times 1 d × 1 )投影到新的正交空间( k × 1 k\times 1 k × 1 )中实现数据降维,所谓的主成分就是指数据在新空间的基的方向。PCA以方差作为信息损失衡量的标准,使得数据降维过程中信息损失最小,即降维后数据的方差要尽量大。PCA首先找到所有数据方差最大的方向,并将其作为新的坐标空间的第一个轴的方向,然后在这个方向的垂直超平面上寻找第二个方差最大的方向,并作为新坐标空间第二个轴的方向,以此类推,直到找到需要的k个方向,也就是K个主成分,显然这k个新的基方向是两两垂直的。PCA的主要过程可以用“扭动坐标轴,保留K个轴”来形容。 为什么要以方差最大为依据呢?降维是为了数据更好地表示与计算,显然我们不希望降维后的数据成了一坨,使得原本分界明显的数据掺和在一起。例如,将数据投影到一维坐标系中,显然绿色的投影更好一些,因为其分散程度大,也就是方差更大。 对n个d维数据构成的数据集 X X X ( d × n d\times

KNeighbors: ValueError 'continuous-multioutput'

爷,独闯天下 提交于 2020-01-17 04:14:05
问题 /home/dogus/anaconda2/lib/python2.7/site-packages/sklearn/utils/validation.py:429: DataConversionWarning : Data with input dtype int8 was converted to float64 by the normalize function. warnings.warn(msg, _DataConversionWarning) Traceback (most recent call last): File "assignment5.py", line 171, in knn.fit(X_train,y_train) File "/home/dogus/anaconda2/lib/python2.7/site-packages/sklearn/neighbors/base.py", line 775, in fit check_classification_targets(y) File "/home/dogus/anaconda2/lib/python2