在matlab中实现PCA算法
function [V,S,E]=princa(X)
[m,n]=size(X); %计算矩阵的行m和列n %-------------第一步:标准化矩阵-----------------%
mv=mean(X); %计算各变量的均值
st=std(X); %计算各变量的标准差
X=(X-repmat(mv,m,1))./repmat(st,m,1); %标准化矩阵X %-------------第二步:计算相关系数矩阵-----------------%
% R1=X'*X/(m-1); %方法一:协方差矩阵计算公式
% R2=cov(X); %方法二:协方差矩阵计算函数
R=corrcoef(X); %方法三:相关系数矩阵函数 %-------------第三步:计算特征向量和特征值-----------------%
[V,D]=eig(R); %计算矩阵R的特征向量矩阵V和特征值矩阵D,特征值由小到大
V=(rot90(V))'; %将特征向量矩阵V从大到小排序
D=rot90(rot90(D)); %将特征值矩阵由大到小排序
E=diag(D); %将特征值矩阵转换为特征值向量 %-------------第四步:计算贡献率和累计贡献率-----------------%
ratio=0; %累计贡献率
for k=1:n
r=E(k)/sum(E); %第k主成份贡献率
ratio=ratio+r; %累计贡献率
if(ratio>=0.9) %取累计贡献率大于等于90%的主成分
break;
end
end %-------------第五步:计算得分-----------------%
S=X*V;
如果要求主成分分析,用matlab自带一个的函数(princomp)就行。Princomp调用如下:
[COEFF,SCORE,latent,tsquare] = princomp(zscore(X))
zscore(X)是对矩阵X进行标准化操作。
COEFF是X矩阵所对应的协方差阵的所有特征向量组成的矩阵,即变换矩阵或称投影矩阵,每列对应一个特征值的特征向量,列的排列顺序是按特征值的大小递减排序
相当于上面程序中的V,它表示的是主成分的系数。
SCORE是对主成分的打分,也就是说原X矩阵在主成分空间的表示。每行对应样本观测值,每列对应一个主成份(变量),它的行和列的数目和X的行列数目相同。(相当于上面程序中的S)
latent是一个向量,它是X所对应的协方差矩阵的特征值向量。 (相当于程序中的E)
特征值与分数之间的关系:latent=diag(cov(SCORE));
tsquare是表示对每个样本点Hotelling的T方统计量
计算PCA的时候,如果直接有现成的协方差阵,用函数pcacov来计算。
在matlab中实现PCA算法的更多相关文章
- sklearn中调用PCA算法
sklearn中调用PCA算法 PCA算法是一种数据降维的方法,它可以对于数据进行维度降低,实现提高数据计算和训练的效率,而不丢失数据的重要信息,其sklearn中调用PCA算法的具体操作和代码如下所 ...
- OpenCV学习(35) OpenCV中的PCA算法
PCA算法的基本原理可以参考:http://www.cnblogs.com/mikewolf2002/p/3429711.html 对一副宽p.高q的二维灰度图,要完整表示该图像,需要m = ...
- Matlab中K-means聚类算法的使用(K-均值聚类)
K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小. 使用方法:Idx=Kmeans(X,K)[Idx,C]=Kmeans(X,K) [Idx, ...
- PCA算法学习(Matlab实现)
PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的. 实现数据降维的步骤: 1.将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩 ...
- MATLAB中“fitgmdist”的用法及其GMM聚类算法
MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...
- Matlab PCA 算法
Matlab 自带PCA函数形式为 [mappedX, mapping] = pca(X, no_dims) 自己编写PCA函数的步骤 %第一步:输入样本矩阵%%%%%%%%%%%%%%%%%%%%% ...
- 我所认识的PCA算法的princomp函数与经历 (基于matlab)
我接触princomp函数,主要是因为实验室的项目需要,所以我一接触的时候就希望快点学会怎么用. 项目中需要利用PCA算法对大量数据进行降维. 简介:主成分分析 ( Principal Compone ...
- 机器学习实战基础(二十三):sklearn中的降维算法PCA和SVD(四) PCA与SVD 之 PCA中的SVD
PCA中的SVD 1 PCA中的SVD哪里来? 细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,P ...
- 机器学习实战基础(二十一):sklearn中的降维算法PCA和SVD(二) PCA与SVD 之 降维究竟是怎样实现
简述 在降维过程中,我们会减少特征的数量,这意味着删除数据,数据量变少则表示模型可以获取的信息会变少,模型的表现可能会因此受影响.同时,在高维数据中,必然有一些特征是不带有有效的信息的(比如噪音),或 ...
随机推荐
- MFC事件和线程
HANDLE WINAPI CreateThread ( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, // 指向SECURITY_ATTRIB ...
- Spring Boot项目Maven Build报错的解决方法
问题1, [ERROR]Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (defau ...
- 主机网络ping: unknown host baidu.com问题解决
本机环境: 系统:Centos 网络:NAT 虚拟机之前一直都可以连外网,但最近不能连了,现状如下: [root@vhost03 ~]# ping baidu.comping: unknown hos ...
- KindEditor4.x整合教程-Xproer.WordPaster
1.1. 集成到KindEditor4.x 主要步骤如下: 1.上传插件文件夹 2.上传WordPaster文件夹 3.在引用页面为KindEditor增加插件按钮 <html xmlns= ...
- 【1】C#文件操作之目录操作
命名空间:System.IO Directory类下的静态方法: 一.创建目录 Directory.CreateDirectory(string fileName); 二.获取指定目录下的所有文件名 ...
- 笔记:使用mailto在网页中链接Email地址
<a>标签还有一个作用是可以链接Email地址,使用mailto能让访问者便捷向网站管理者发送电子邮件.我们还可以利用mailto做许多其它事情.下面一一进行讲解,请看详细图示: 注意:如 ...
- AIX nfs简单说明
AIX 系统 NFS设置 一.NFS守护进程:NFS是通过使用许多用户级的守护进程及远程过程调用等网络应用程序来实现的.而NFS服务器及客户端的守护进程并不完全一致. 1. 作为NFS服务器所需的守护 ...
- 2017-11-29 由runnable说起Android中的子线程和主线程
1.首先纠正一个观点,就是runnable运行在子线程中是错误的观念.runnable只是创建了一个执行任务的对象,但是它本身并不会创建一个新的子线程,Runable只是给你接口让你实现工作线程的工作 ...
- web百度地图跨域问题
//根据经纬度获取地理位置信息function latOrLng(sLat, sLng) { var resUrl = 'http://api.map.baidu.com/geocoder/v2/?a ...
- MySQl数据约束练习
默认值约束 1 CREATE TABLE USER( 2 uid INT, 3 uname VARCHAR(10), 4 address VARCHAR(30) DEFAULT '山东省' 5 ) ...