首页
学习
活动
专区
圈层
工具
发布

数据挖掘实战:PCA算法

第二步:求特征协方差矩阵 公式如下: ? 第三步:求解协方差矩阵的特征值和特征向量 ? ?...第四步:将特征值从大到小进行排序,选择其中最大的 k 个,然后将其对应的 k 个特征向量分别作为列向量组成特征矩阵 这里的特征值只有两个,我们选择最大的那个,为: 1.28402771 ,其对应的特征向量为...注意:matlab 的 eig 函数求解协方差矩阵的时候,返回的特征值是一个特征值分布在对角线的对角矩阵,第 i 个特征值对应于第 i 列的特征向量 第五步: 将样本点投影到选取的特征向量上 假设样本列数为...但为什么协方差的特征向量就是最理想的 k 维向量?这个问题由PCA的理论基础来解释。...PCA 的理论基础 关于为什么协方差的特征向量就是 k 维理想特征,有3个理论,分别是: 最大方差理论 最小错误理论 坐标轴相关度理论 这里简单描述下最大方差理论: 最大方差理论 信号处理中认为信号具有较大的方差

1.6K100

数据挖掘实战:PCA算法

第二步:求特征协方差矩阵 公式如下: ? 第三步:求解协方差矩阵的特征值和特征向量 ? ?...第四步:将特征值从大到小进行排序,选择其中最大的 k 个,然后将其对应的 k 个特征向量分别作为列向量组成特征矩阵 这里的特征值只有两个,我们选择最大的那个,为: 1.28402771 ,其对应的特征向量为...注意:matlab 的 eig 函数求解协方差矩阵的时候,返回的特征值是一个特征值分布在对角线的对角矩阵,第 i 个特征值对应于第 i 列的特征向量 第五步: 将样本点投影到选取的特征向量上 假设样本列数为...但为什么协方差的特征向量就是最理想的 k 维向量?这个问题由PCA的理论基础来解释。...PCA 的理论基础 关于为什么协方差的特征向量就是 k 维理想特征,有3个理论,分别是: 最大方差理论 最小错误理论 坐标轴相关度理论 这里简单描述下最大方差理论: 最大方差理论 信号处理中认为信号具有较大的方差

1.4K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【干货】计算机视觉实战系列05——用Python做图像处理

    那么如何计算协方差矩阵,matlab和numpy都可以利用cov(x)进行直接计算。注意这个地方输入的X为一个矩阵,在matlab中默认每一列为一个一维数据,行数代表了数据组的维数。...值得注意的是numpy中的cov函数与matlab不同,其将每一行作为一个一维数据。因此利用cov进行计算,需先对其转置。...这里我们使用了range()函数该函数的输入参数为一个整数n,函数返回整数0,...,(n-1)的一个列表。...当然你也可以用arrange()函数来返回一个数组,或者用xrange()函数返回一个产生器(可能会提升速度)。...如果数据个数小于向量维数,我们就不用SVD分解,而是计算维数更小的协方差矩阵的特征向量。通过仅计算对应前k(k是降维后的维数)最大特征值的特征向量可以使上面PCA操作更快。

    3K70

    Machine Learning -- 11种相似性度量方法(总结版)

    (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。...马氏距离(Mahalanobis Distance) (1)马氏距离定义 有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为: ?...而其中向量Xi与Xj之间的马氏距离定义为: ? 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了: ? 也就是欧氏距离了。   ...(3)Matlab计算(1, 2 ,3 ,4 )与( 3 ,8 ,7 ,6 )之间的相关系数与相关距离 X = [1 2 3 4 ; 3 8 7 6] C = corrcoef( X' ) %将返回相关系数矩阵...当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0 参考资料: [1]吴军.

    7.5K70

    机器学习的相似性度量

    若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。...马氏距离(Mahalanobis Distance) (1)马氏距离定义 有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:...而其中向量Xi与Xj之间的马氏距离定义为: 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了: 也就是欧氏距离了。   ...(2)Matlab计算汉明距离   Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。...当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0 学习大数据先从一个小的目标开始,比如学个神经网络啥的 ↓↓↓

    1.7K80

    在机器学习中用到了各式各样的距离

    (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。...马氏距离(MahalanobisDistance) (1)马氏距离定义 有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为: ?...而其中向量Xi与Xj之间的马氏距离定义为: ? 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了: ? 也就是欧氏距离了。   ...(3)Matlab计算(1, 2 ,3 ,4 )与( 3 ,8 ,7 ,6 )之间的相关系数与相关距离 X = [1 2 3 4 ; 3 8 7 6] C = corrcoef( X' ) %将返回相关系数矩阵...当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0 免责声明:本文系网络转载。版权归原作者所有。如涉及版权,请联系删除!

    1.3K60

    MATLAB中的矩阵分解技术:从基础到应用

    ,但相信我,掌握了这个技能,你能解决的问题范围会大大扩展。矩阵分解就像是把一个复杂的矩阵"拆解"成几个更简单、更有特定结构的矩阵的乘积。为什么要这么做呢?...主成分分析:对协方差矩阵进行特征值分解可以找到数据的主成分。微分方程求解:许多数值方法依赖于矩阵的特征结构。图论:邻接矩阵的特征值和特征向量包含了图的重要拓扑信息。...7.2 网页排名算法Google的PageRank算法本质上是求解一个特征值问题。网页之间的链接关系可以表示为一个巨大的转移矩阵,该矩阵的主特征向量就给出了各网页的重要性排名。...matlab% 假设faces是一个矩阵,每一列是一张人脸图像的向量表示% [U, S, V] = svd(faces, 'econ');% eigenfaces = U(:, 1:k); % 前k个特征脸...matlab[Q, R] = qr(A); % 完整QR分解[Q, R] = qr(A, 0); % 经济型QR分解,Q只有n列(而不是m列)[~, R] = qr(A, 0)

    29510

    机器学习中应用到的各种距离介绍(附上Matlab代码)

    (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。...马氏距离(MahalanobisDistance) (1)马氏距离定义 有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为: ?...而其中向量Xi与Xj之间的马氏距离定义为: ? 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了: ? 也就是欧氏距离了。   ...(3)Matlab计算(1, 2 ,3 ,4 )与( 3 ,8 ,7 ,6 )之间的相关系数与相关距离 X = [1 2 3 4 ; 3 8 7 6] C = corrcoef( X' ) %将返回相关系数矩阵...当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0 参考资料: [1]吴军. 数学之美 系列 12 -余弦定理和新闻的分类.

    4.8K30

    机器学习中的相似性度量总结

    若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。...马氏距离(Mahalanobis Distance) ---- (1)马氏距离定义 有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为: 而其中向量Xi与...Xj之间的马氏距离定义为: 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了: 也就是欧氏距离了。...(2)Matlab计算汉明距离 Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。...当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0。

    82420

    机器学习中的相似性度量总结

    (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。...而其中向量Xi与Xj之间的马氏距离定义为: ? 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了: ? 也就是欧氏距离了。...(2)Matlab计算汉明距离   Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。...(3)Matlab计算(1, 2 ,3 ,4 )与( 3 ,8 ,7 ,6 )之间的相关系数与相关距离 X = [1 2 3 4 ; 3 8 7 6] C = corrcoef( X' ) %将返回相关系数矩阵...当X只有一个分类时,信息熵取最小值0 参考资料: [1]http://www.google.com.hk/ggblog/googlechinablog/2006/07/12_4010.html [2]

    1.7K20

    机器学习(8) -- 降维

    两种等价的推导结论是:对协方差矩阵 进行特征值分解,将求得的特征值进行降序排序,再去前k个特征值对应的特征向量构成 。 其中 ?...计算样本的协方差矩阵 ?...(其中 是n*1的向量) 在matlab中具体实现如下,其中X为m*n的矩阵: Sigma = (1/m) * X'* X; 对2中求得的协方差矩阵Sigma进行特征值分解 在实践中通常对协方差矩阵进行奇异值分解代替特征值分解...在matlab中实现如下: [U, S, V] = svd(Sigma); (svd即为matlab中奇异值分解的内置函数) 取最大的k个特征值所对应的特征向量 在matlab具体实现时,Ureduce...( 为k*1的向量) 下面总结在matlab中实现PCA的全部算法(假设数据已被中心化) Sigma = (1/m) * X' * X; % compute the covariance matrix

    1.1K100

    详解马氏距离中的协方差矩阵计算(超详细)

    若协方差大于0,表示一个变量增大时另一个变量也会增大,即两个变量呈正相关;若协方差小于0,表示一个变量增大时另一个变量会减小,即两个变量呈负相关;若协方差为0,则统计学上认为二者线性无关。...协方差的计算公式如下: 5.协方差矩阵 在统计学与概率论中,协方差矩阵的每个元素是各个向量元素之间的协方差,是从标量随机变量到高维度随机向量的自然推广。...对于一个均值为μ,协方差矩阵为Σ的多变量行向量x(设x有m个分量,且每个分量都是n维列向量),其马氏距离矩阵为: 其中 可以发现,(x-μ)T是m×n矩阵,Σ是n×n矩阵,(x-μ)...2.马哈拉诺比斯距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ 的样本点x与y的差异程度: 假设x,y都是3维向量,那么由于(x-y)T是1×3矩阵,Σ的逆是3×3矩阵(因为这里我们的数据点有...3.两个样本点的马氏距离计算示例: Matlab计算协方差矩阵验算(矩阵a的列代表属性,行代表样本点): 得到协方差矩阵后,我们就可以计算出v和x之间的马氏距离了: Matlab验算:

    4.6K20

    MATLAB实现人脸识别

    1)将训练集的每一个人脸图像都拉长一列,将他们组合在一起形成一个大矩阵A。...2)将所有的N个人脸在对应维度上加起来,然后求个平均,就得到了一个“平均脸”。 3)将N个图像都减去那个平均脸图像,得到差值图像的数据矩阵Φ。 4)计算协方差矩阵C=ΦΦT。再对其进行特征值分解。...就可以得到想要的特征向量(特征脸)了。 5)将训练集图像和测试集的图像都投影到这些特征向量上了,再对测试集的每个图像找到训练集中的最近邻或者k近邻啥的,进行分类即可。 对于步骤4,涉及到求特征值分解。...如果人脸的特征维度d很大,例如256*256的人脸图像,d就是65536了。那么协方差矩阵C的维度就是d*d=65536x65536。...对这个大矩阵求解特征值分解如果N不大的话,可以通过求解C’=ΦTΦ矩阵来获得同样的特征向量,计算相似性用的是欧氏距离。

    1K40

    R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型|附代码数据

    误差方差-协方差矩阵的先验信息不足。...从下面的输出中可以看出,在VAR(4)模型中似乎只有几个变量是相关的。常数项的概率为100%,因为它们已从SSVS中排除。...但是,如果研究人员不希望使用模型,变量的相关性可能会从采样算法的一个步骤更改为另一个步骤,那么另一种方法将是仅使用高概率的模型。...rplot(bvar_pred) 脉冲响应分析 r plot(OIR ----最受欢迎的见解 1.matlab使用贝叶斯优化的深度学习 2.matlab贝叶斯隐马尔可夫hmm模型实现 3.R语言...7.R语言使用贝叶斯 层次模型进行空间数据分析 8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型 9.matlab贝叶斯隐马尔可夫hmm模型实现

    46100

    pca

    3.数据本身具有较高的信躁比。 4.假设主元向量之间是正交的。...PCA的可视化理解 PCA的求解方法: image.png image.png MySample=fix(rand(10,3)*50) 协方差是计算不同维度间的协方差,样本矩阵的每行是一个样本,每列为一个维度...matlab代码实现如下: X=MySample=repmat(mean(MySample),10,1); % 中心化样本矩阵,使各维度均值为0 C=X'*X/(size(X,1)-1); 为什么在...PCA中,协方差矩阵的特征向量就是主元,等价于原矩阵的奇异值分解,主元并非降维后的样本矩阵,而是投影矩阵,原矩阵可通过投影矩阵投影达到降维的目的。...PCA得到的投影空间是协方差矩阵的特征向量,而LDA则是通过求得一个变换W,使得变换之后的新均值之差最大,方差最大,变换W就是特征的投影方向。

    1K20

    主成分分析详解_pca主成分分析贡献率

    这里x的均值是1.81,y的均值是1.91,那么一个样例减去均值后即为(0.69,0.49),得到 第二步,求特征协方差矩阵,如果数据是3维,那么协方差矩阵是 这里只有x和y,求解得...协方差是衡量两个变量同时变化的变化程度。协方差大于0表示x和y若一个增,另一个也增;小于0表示一个增,一个减。...整个PCA过程貌似及其简单,就是求协方差的特征值和特征向量,然后做数据转换。但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的k维向量?其背后隐藏的意义是什么?整个PCA的意义是什么?...先假定只有二维,即只有两个变量,它们由横坐标和纵坐标所代表;因此每个观测值都有相应于这两个坐标轴的两个坐标值;如果这些数据形成一个椭圆形状的点阵,那么这个椭圆有一个长轴和一个短轴。...比如如下摘自另一篇博客上的Matlab实验结果: 可见测试样本为人脸的样本的重建误差显然小于非人脸的重建误差。

    3.2K11

    8段代码演示Numpy数据运算的神操作

    Numpy支持高阶、大量计算的矩阵、向量计算,与此同时提供了较为丰富的函数。Numpy采用友好的BSD许可协议开放源代码。它是一个跨平台的科学计算库,提供了与Matlab相似的功能和操作方法。...U矩阵是被分解为的三个矩阵之一,它是一个m×m的方阵,构成这个矩阵的向量是正交的,被称为左奇异向量;∑是一个m×n的向量,它的特点是除了对角线中的元素外,其余元素都为0。...仔细的读者可能会注意到,为什么这里使用SVD算法生成的矩阵U与VT是相同的。大家可能会注意到在上面的代码片段中,为何多了一个生成矩阵another_matrix的过程。...我们在第2章介绍过用于线性降维的PCA算法,该算法中有一个步骤是将协方差矩阵分解然后重建,下面我们演示一下使用Numpy的SVD算法来实现PCA算法的例子: 7....pc = np.dot(new_data, U) # 返回矩阵的第一个列向量即是降维后的结果 return pc[:, 0] def unit_test(): data =

    1.7K20

    原创|一文读懂主成分分析(PCA)

    新base下的新样本就是一条直线上的点(红色的点),他们只有一个属性,一个维度。下图所示,我们总是有两种选择(我们真的只有这两种吗?...但实际上可以证明:这两种方法是等价的。(先思考一下这是为什么?) 数学推导 数据集记为,若简单假设每个样本具有两个属性,容易知道,所有样本的属性构成了一个均值为的分布,该分布具有自己的均值和方差。...(事实上,样本的协方差矩阵很像这个矩阵,这个矩阵是半正定的,其特征值均不小于0) ? 这里把类似协方差矩阵的这一坨记为矩阵,那么此时就变成了 ? 。即需要求解矩阵的特征向量。...(提示:kernel PCA,答案是可以降低到1维) 2.我们可以用求新基下投影距离平方和最小值的方式推导吗? 3.协方差矩阵为什么会出现?回想一下协方差矩阵在统计学中的含义是什么?...因为方差是一些平方和,所以肯定不是负的,那么轻易可以得到协方差矩阵的特征值一定不为负。那实际用matlab或者python计算的时候为什么还会出现特征值是负数的情况呢?

    4.5K20

    模式识别从0构建—PCA

    推导结果是,正交向量就是归一化的协方差矩阵的特征向量,对应的系数就是对应的特征值。使用PCA方法提取特征脸的步骤如下: 设有m条n维数据。...1)将原始数据按列组成n行m列矩阵X 2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 3)求出协方差矩阵 C=\dfrac{1}{m}XX^T 4)求出协方差矩阵的特征值及对应的特征向量...5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P 6)Y=PX即为降维到k维后的数据 在实际应用中,大小为:特征数x特征数的协方差矩阵计算特征值和特征向量会很不方便,因此,化简出一种简便的求解方法...,即先求大小为:图片数x图片数的协方差矩阵的特征值和特征向量,再将特征向量矩阵与原始样本相乘,这样得到的新的特征向量与第一种方法求出的特征向量等价。...¶二、实验结果 使用MATLAB完成实验,源代码及数据集已上传到Github。 前25张特征脸如图所示: ? 分别使用前10、100、400张特征脸对图像还原,效果如下图: ?

    1.7K10
    领券