pca

PCA降维(二)

匿名 (未验证) 提交于 2019-12-03 00:15:02
下面是我实现的PCA代码,有不足之处还请指正 import numpy as np from sklearn . decomposition import PCA from sklearn . linear_model import LogisticRegression ''' define class myPCA ''' class myPCA : ''' Initialize function of class myPCA. Input: n_components:The dimension after dimensionality reduction if n_components=0, n_components will be set by the refactoring threshold t: threshold, t=0.95 ''' def __init__ ( self , n_components = 0 , t = 0.95 ) : self . n_components = n_components self . t = t self . w = [ ] self . mean_x = [ ] ''' define get_mean_X function. Input: X:numpy.ndarry, size: [num_sample, num

鸢尾花数据(PCA主成分分析)

匿名 (未验证) 提交于 2019-12-03 00:14:01
1.导包 2.提取数据 3.PCA降维 提取两个主成分的累计贡献率达到了0.9777,说明主成分的解释效果较好。 当参数n_components中不填写任何值时,默认返回min(X.shape)个特征。一般来说,样本量都会大于 特征数目,所以什么都不填就相当于转换了新特征空间,但没有减少特征的个数。一般不会使用 _components取值。 来源:博客园 作者: lvzw 链接:https://www.cnblogs.com/lvzw/p/11655902.html

PCA的学习笔记

匿名 (未验证) 提交于 2019-12-03 00:13:02
之前我经常使用PCA,但是我发现我没有很懂PCA,这次重新学习机器学习,我想想彻彻底底地搞懂一下,网上也看了很多的资料,似乎对其的理解有了更加进一步的认识。我感觉需要从以下四块来认识PCA。 1. PCA是干什么? 就是说PCA解决了什么问题? 2.PCA的数学原理是什么? 3.PCA用python 什么包调用比较方便,理解每个参数的意义? 4.用PCA来实战一个例子? 以上是我的学习思路,PCA-Principal Component Analysis-主成分分析 也就是机器学习中的无监督学习 PCA干什么用的 这个干什么用,网上自然有很多的说明,主要就是降维,我以前一直不明白,降低纬度以后,每个纬度代表什么,其实不用这么死理解,需要换个思路,从主成分角度+协方差的角度去思考这个问题,我相当于是建立了一个新的N维坐标,并没有具体的含义,但是按照eigenValue 从大到小排序,使得前几个纬度可以解释大部分的方差变异。 有啥用,就是减少了数据量,方便后面计算,同时可以看到在前几个主成分上,所有样本的分布情况,这样可以看个分类。 #PCA的数学原理是什么? 这里涉及了矩阵的分解,SVD,之前有详细的推导,大家也可以看网上有很多的解释,我主要想说的,可以用当时我考研复习矩阵的时候的一个想法来理解,就是这个其实是矩阵本身的一个性质,所以叫无监督学习,自己学习,推导出自己的一个性质

基于PCA的图像降维及图像重构

匿名 (未验证) 提交于 2019-12-03 00:11:01
代码链接: 1 PCA 简述 PCA(Principal Component Analysis)主成分分析算法,在进行图像识别以及高维度数据降维处理中有很强的应用性,算法主要通过计算选择特征值较大的特征向量来对原始数据进行线性变换,不仅可以去除无用的噪声,还能减少计算量。 2 算法过程 2.1 对所有的样本进行中心化; 数据集的每个样本的不同特征减去所有样本对应特征的均值,处理过的不同特征上的数据均值为0。这样处理的好处是 可以减少特征之间的差异性,可以使得不同的特征具有相同的尺度,让不同特征对参数的影响程度一致 。 2.2 计算样本的协方差矩阵 (每列代表一个特征,每行代表一个样本) 2.2.1 计算样本矩阵每一列的均值 2.2.2 样本矩阵的每个样本减去对应列的均值 2.2.3 通过以下公式得到协方差矩阵 (m为样本总数) 2.3 对协方差矩阵进行特征值分解,得到特征值和特征向量; 2.4 取出最大的 k 个特征值对应的特征向量,组成投影矩阵W; 2.5 对样本集中的每一个样本,都乘以投影矩阵W进行转化,得到降维的数据; 3 Python代码实例 #encoding:GBK """ Created on 2019/09/23 16:19:11 @author: Sirius_xuan """ ''' 基于PCA的图像降维及重构 ''' import numpy as np

用scikit-learn进行LDA降维

匿名 (未验证) 提交于 2019-12-02 23:49:02
    在 线性判别分析LDA原理总结 中,我们对LDA降维的原理做了总结,这里我们就对scikit-learn中LDA的降维使用做一个总结。     在scikit-learn中, LDA类是sklearn.discriminant_analysis.LinearDiscriminantAnalysis。那既可以用于分类又可以用于降维。当然,应用场景最多的还是降维。和PCA类似,LDA降维基本也不用调参,只需要指定降维到的维数即可。     我们这里对LinearDiscriminantAnalysis类的参数做一个基本的总结。     1) solver shrinkage 进行正则化。默认值是svd     2) shrinkage :正则化参数,可以增强LDA分类的泛化能力。如果仅仅只是为了降维,则一般可以忽略这个参数。默认是None,即不进行正则化。可以选择"auto",让算法自己决定是否正则化。当然我们也可以选择不同的[0,1]之间的值进行交叉验证调参。注意shrinkage只在solver为最小二乘"lsqr"和特征分解"eigen"时有效。     3) priors     4) n_components :即我们进行LDA降维时降到的维数。在降维时需要输入这个参数。注意只能为[1,类别数-1)范围之间的整数。如果我们不是用于降维,则这个值可以用默认的None。

第四章 降维

匿名 (未验证) 提交于 2019-12-02 23:49:02
0 写在前面 所谓的降维就是用一个低维度的向量表示原始高维度的特征。常见的降维方法有 主成分分析、线性判别分析、等距映射、局部线性嵌入、拉普拉斯特征映射、局部保留投影 。 01 PCA最大方差理论 Q1:如何定义主成分?从这种定义出发,如何设计目标函数使得降维达到提取主成分的目的?针对这个目标函数,如何对PCA问题进行求解? A1:PCA旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。 证明过程详见P75-77 02 PCA最小平方误差理论 Q1:PCA求解的其实时最佳投影方向,即一条直线, 这与数学中线性回归问题的目标不谋而合,能否从回归的角度定义PCA的目标并相应地求解问题呢? A1:线性回归问题就是求解一个线性函数使得对应直线能够更好地拟合样本集合。如果从这个角度定义PCA的目标,那么问题就会转化为一个回归问题。证明见P79-81 03 线性判别分析 LDA是目前机器学习、数据挖掘领域中经典热门的一种算法。相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中,算法没有考虑数据的标签(类别),只是把原数据映射到一些方差比较大的方向上而已。 Q1:对于具有类别标签的数据,应当如何设计目标函数使得降维的过程中不损失类别信息?在这种目标下,应当如何进行求解? A1:LDA首先是为了分类服务的,因此只要找到一个投影方向w

PCA,AE,VAE,RPCA,概率PCA之间的联系与区别

匿名 (未验证) 提交于 2019-12-02 23:43:01
AE 自编码器 代码:自编码器keras教程 是半监督的,自编码器是只有一层隐层节点,输入和输出具有相同节点数的神经网络 自动编码器输入的是X,我们的AE网络结构是X->H->X‘,我们的目的是让X’尽可能的等于X(X‘与X有相同维度),这样训练出来的H就可以用来表示或重构X。 用于压缩数据,但是没有泛化能力,因此不能作为生成模型 自动编码器与PCA的比较 自动编码器既能表征线性变换,也能表征非线性变换 ;而 PCA 只能执行线性变换 。 PCA可以直接得到最优的解析解,而AutoEncoders只能通过反向传播得到局部最优的数值解 。因为自动编码器的网络表征形式,所以可将其作为层用于构建深度学习网络。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。 PCA PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征

数据预处理PCA,标准化

匿名 (未验证) 提交于 2019-12-02 23:05:13
1.PCA from sklearn.decomposition import RandomizedPCA # 100维度 n_components = 100 pca = RandomizedPCA(n_components=n_components, whiten=True).fit(x_train) # 将降维的再调回去 eigenfaces = pca.components_.reshape((n_components, h, w)) # 特征提取 x_train_pca = pca.transform(x_train) x_test_pca = pca.transform(x_test) 2.标准化 from sklearn import preprocessing import numpy as np X = np.array([[ 1., -1., 2.],[ 2., 0., 0.],[ 0., 1., -1.]]) scaler= preprocessing.MinMaxScaler(feature_range=(-1, 1)).fit(X) X_scaled = scaler.transform(X) # 将标准化的数据转化为原数据 X1=scaler.inverse_transform(X_scaled)

Python3入门机器学习 经典算法与应用(网盘免费分享)

匿名 (未验证) 提交于 2019-12-02 22:51:30
部分课程学习资料截图: 免费课程资料领取目录: Python Flask构建微信小程序订餐系统 (网盘免费分享) 链接:https://pan.baidu.com/s/1rB7h53iNOweyqWTZXQv4cg 提取码:o9el ps:免费分享,如若链接失效请加群( 注意是免费免费免费分享 ) 私聊管理员即可免费领取;群――517432778,点击加群,或扫描二维码 第1章 欢迎来到 Python3 玩转机器学习 欢迎大家来到《Python3玩转机器学习》的课堂。在这个课程中,我们将从0开始,一点一点进入机器学习的世界。本门课程对机器学习领域的学习,绝不不仅仅只是对算法的学习,还包括诸如算法的评价,方法的选择,模型的优化,参数的调整,数据的整理,等等一系列工作。准备好了吗?现在开始我们的机器学习之旅!... 1-1 什么是机器学习 试看 1-2 课程涵盖的内容和理念 试看 1-3 课程所使用的主要技术栈 试看 第2章 机器学习基础 机器学习到底是什么鬼?这一章将带领大家深入理解机器学习的世界,让大家去熟悉那些看似陌生的专业术语。监督学习,非监督学习,半监督学习,增强学习,批量学习,在线学习,参数学习,非参数学习。看完这一章,这些概念你就统统了解啦。不仅如此,本章还包含相当深刻地和机器学习相关的哲学探讨,让你深入思索有关机器学习... 2-1 机器学习世界的数据 2-2

What is the fastest way to calculate first two principal components in R?

筅森魡賤 提交于 2019-12-02 20:42:12
I am using princomp in R to perform PCA. My data matrix is huge (10K x 10K with each value up to 4 decimal points). It takes ~3.5 hours and ~6.5 GB of Physical memory on a Xeon 2.27 GHz processor. Since I only want the first two components, is there a faster way to do this? Update : In addition to speed, Is there a memory efficient way to do this ? It takes ~2 hours and ~6.3 GB of physical memory for calculating first two components using svd(,2,) . Dirk Eddelbuettel You sometimes gets access to so-called 'economical' decompositions which allow you to cap the number of eigenvalues /