精华内容
下载资源
问答
  • Matlab主成分分析

    2015-05-21 15:54:59
    Matlab原代码分析,Matlab主成分分析
  • MATLAB主成分分析

    2011-06-20 20:37:15
    MATLAB主成分分析 很好的资源 试试看吧
  • 1•设随机向量X=(Xi,X2,X3)T的协方差与相关系数矩阵分别为14,R425分别从,R出发,求X的各主成分以及各主成分的贡献率并比较差异况。...总体主成分分析:>>[PC,vary,explained]=pcacov(S)主成分交换矩阵:...

    1•

    设随机向量

    X=

    (

    X

    i

    ,

    X

    2

    ,

    X

    3

    )

    T

    的协方差与相关系数矩阵分别为

    1

    4

    R

    4 25

    分别从,

    R

    出发,求

    X

    的各主成分以及各主成分的贡献率并比较差异况。

    解答:

    >> S=[1 4;4 25];

    >> [P C,vary,ex plain ed]=p cacov(S);

    总体主成分分析:

    >> [P C,vary,ex plain ed]=p cacov(S)

    主成分交换矩阵:

    PC =

    -0.1602 -0.9871

    -0.9871

    0.1602

    主成分方差向量:

    vary =

    25.6491

    0.3509

    各主成分贡献率向量

    explained =

    98.6504

    1.3496

    则由程序输出结果得出,

    X

    的主成分为

    :

    Y

    1

    =-0.1602X

    1

    -0.9871X

    2

    Y

    2

    =-0.9871X

    1

    +0.1602X

    2

    两个主成分的贡献率分别为:

    98.6504%, 1.3496%

    ;

    U

    若用第一个主成分代替原

    的变量,信息损失率仅为

    1.3496

    ,是很小的。

    2.

    根据安徽省

    2007

    年各地市经济指标数据,见表

    5.2

    ,求解:

    (1)

    利用主成分分析对

    17

    个地市的经济发展进行分析,给出排名

    ;

    (2)

    此时能否只用第一主成分进行排名?为什么?

    展开全文
  • MATLAB 主成分分析

    2019-04-24 00:43:53
    主成分分析基本原理 当我们拿到一组数据,例如中学生身高、胸围、体重这三组数据,我们可以拿这三组数据来描述一个中学生的身形。但是很多情况下,这样的数据种类太多而且过于杂乱,无法很好地描述实体。 主成分...

    主成分分析基本原理

    • 当我们拿到一组数据,例如中学生身高、胸围、体重这三组数据,我们可以拿这三组数据来描述一个中学生的身形。但是很多情况下,这样的数据种类太多而且过于杂乱,无法很好地描述实体。
    • 主成分分析的思想就是,在给出数据 X1X2X3...XnX_1、X_2、X_3\quad ... \quad X_n 基础上,创造新的一组数据Y1Y2Y3...YnY_1、Y_2、Y_3\quad ... \quad Y_n 这组新的数据能更好地描述实体。
    • Y能更好地描述,主要是因为 Y 中含有更多的信息,通常来说,越靠前的 Y 包含有效信息越多,我们用贡献率描述包含成分的多少。所有 Y 的贡献率为1,一般来说,前一到两个Y就能描述 85% 以上信息。
    • Y 是由 X 线性表示出来的,也就是说,从原来每个成分里面按比例线性相加,形成更加能描述实体的值。

    MATLAB函数介绍

    X1 = zscore(X)

    将数据标准化,原始数据由于单位等的不同,会有数值过大和过小的情况,需要将数据进行标准化,然后对标准化的数据进行分析。

    [coeff, score, latent] = pca(X)

    • 对矩阵X进行主成分分析。
    • X 每一列是一个指标 XnX_n,每一行是一个样本。
    • coeff 给出主成分变换矩阵,每一列的系数代表这个主成分含有原函数XX的系数,即第一列是 Y1Y_1 第二列是 Y2Y_2;第一行是 X1X_1 系数,第二行是 X2X_2 系数。
    • score 是得分,即每个主成分每个样本的得分情况,即描述每个样本 YY 的数据。
    • latent 是每个主成分 YY 的特征值,每个特征值占总特征值和的比重就是贡献率,贡献率即代表了对事物的描述程度。

    sum 和 cumsum

    sum 用于求和,cumsum用于求阶梯和,对 latent 使用,来计算累积贡献率。

    [B,I] = sort(A,direction)

    • 对矩阵 A 进行排序,每一行为一个整体,以第一列元素大小为依据,direction 可以选择 ascend 或 descend
    • 返回的 B 为新矩阵,I 为之前矩阵的行序号,注意 I 是一个矩阵,只不过每行元素相同。

    主成分分析步骤

    • 进行标准化处理
    • 进行主成分分析
    • 根据结果,选择主成分,写出表达式
    • 根据数据进一步分析

    应用——综合评价

    在这里插入图片描述

    A=[8589.4	8306.64	3225.16	2175.64	8196.1	471.48
    1816.45	1787.41	708.88	867.88	2209.24	56.73
    844.41	820.13	258.18	254.99	798.09	65.36
    1424.57	1409.93	268.74	336.61	1392.27	58.16
    2215.54	2138.37	572.69	387.01	1971.21	64.51
    1681.71	1627.8	459.83	383.81	1582.78	78.21
    953.92	938.06	526.29	1443.43	952.35	-9.22
    2279.22	2230.14	764.05	600.52	2221.93	239.4
    1751.02	1697.65	494.53	460.59	1572.72	80.94
    2560.21	2509.71	947.14	929.84	2556.55	97.96
    5454.16	5340.36	2267.7	1431.29	5117.49	306.83
    1705.52	1672.06	585	376.59	1640.09	119.84
    1911.76	1879.79	834.47	519.86	2490.82	36.76
    655.82	636.68	206.05	265.67	640.15	52.68
    3011.46	2963.62	685.63	625.48	2960.32	199.35
    565.45	547.11	202.58	108.2	536.25	24.62];
    A = zscore(A);
    [coeff, score, latent] = pca(A);
    fprintf('变换矩阵\n')
    disp(coeff);
    latent_sum = sum(latent);
    latent = cumsum(latent/latent_sum);
    fprintf('累积贡献率\n')
    disp(latent');
    [range_score,I] = sort(score,'descend');
    rangeIndex = size(score,2);  %最后一行插入排名
    for i = 1:size(I,1)
        score(I(i,1),rangeIndex) = i;
    end
    fprintf('城市得分与排名\n');
    disp(score)
    

    在这里插入图片描述
    所以我们选取Y1Y2Y_1、Y_2 就可以描述 98.17% 的数据,根据第一个主成分得分进行排名。其中:
    Y1=0.4218X1+0.4219X2+0.4196X3+0.3677X4+0.4206X5+0.3950X6Y_1=0.4218X_1+0.4219X_2+0.4196X_3+0.3677X_4+0.4206X_5+0.3950X_6
    Y2=0.1285X10.1279X2+0.0848X3+0.8357X40.0842X50.5045X6Y_2=-0.1285X_1-0.1279X_2+0.0848X_3+0.8357X_4-0.0842X_5-0.5045X_6

    应用——分类

    现在有一些货币的数据,前100组是真钱,后100组是假钱。
    在这里插入图片描述

    %已导入数据X
    X = zscore(X);
    [coeff,score,latent] = pca(X);
    latents = sum(latent);
    latent = cumsum(latent/latents);
    fprintf('贡献率');
    disp(latent');
    plot(score(1:100,1),score(1:100,2),'r*',...
        score(101:200,1),score(101:200,2),'bo');
    xlabel('第一主成分'); ylabel('第二主成分');
    legend('真币','假币');
    

    在这里插入图片描述
    在这里插入图片描述
    如图,已经基本可以确定假币和真币,但是由于前两个贡献值不够,所以图像还有些许问题。

    根据协方差矩阵计算特征值

    • 先计算数据的协方差矩阵,将矩阵用 eig 函数分解,即 [v,d] = eig(cov(X));
    • 主成分贡献率为 q = sum(d)/sum(sum(d))
    • 主成分得分为 X * v;加权主成分得分为 X ..* (ones(size(X,1),1) * q) * v
    [M,N] = size(X);
    [v,d] = eig(cov(X));
    q = sum(d)/sum(sum(d));
    w = q/sum(q);
    F = X.*(ones(M,1)*w)*v;
    plot(F(1:100,6),F(1:100,5),'or',F(101:200,6),F(101:200,5),'+')
    

    在这里插入图片描述
    如图所示,区分更加明显

    展开全文
  • matlab 主成分分析

    2009-11-27 19:49:16
    本人为了获得更多资源共享的权限,只好吐血奉献自己一年来收集和改写的matlab源程序,部分为原创;里面包含有主成分分析、岭回归分析、因子分析、判别分析、聚类...主成分分析,基于matlab的程序源代码,拿来既可以用的
  • 让我们看一下第一个返回的主成分(PC矩阵的第一列): >> PC(:,1) 0.36139 -0.084523 0.85667 0.35829 这表示为原始尺寸的线性组合,即: PC1 = 0.36139*dim1 + -0.084523*dim2 + 0.85667*dim3 + 0.35829*dim4 因此,...

    使用PCA,返回的每个主要组件将是原始列/维度的线性组合。也许一个例子可能会消除你的任何误解。

    让我们考虑包含150个实例和4个维度的Fisher-Iris数据集,并对数据应用PCA。为了使事情更容易理解,我首先将数据置于零中心,然后再调用PCA函数:

    load fisheriris

    X = bsxfun(@minus, meas, mean(meas)); %# so that mean(X) is the zero vector

    [PC score latent] = princomp(X);

    让我们看一下第一个返回的主成分(PC矩阵的第一列):

    >> PC(:,1)

    0.36139

    -0.084523

    0.85667

    0.35829

    这表示为原始尺寸的线性组合,即:

    PC1 = 0.36139*dim1 + -0.084523*dim2 + 0.85667*dim3 + 0.35829*dim4

    因此,为了在由主成分构成的新坐标系中表达相同的数据,新的第一维应该是根据上述公式的原始线的组合。

    我们可以简单地将此计算为X*PC,这正是PRINCOMP(score)的第二个输出中返回的内容,以确认此尝试:

    >> all(all( abs(X*PC - score) < 1e-10 ))

    1

    最后,每个主成分的重要性可以通过它解释的数据的方差来确定。这是由PRINCOMP的第三个输出(latent)返回的。

    我们可以在不使用PRINCOMP的情况下自行计算数据的PCA:

    [V E] = eig( cov(X) );

    [E order] = sort(diag(E), 'descend');

    V = V(:,order);

    协方差矩阵V的特征向量是主要成分(与PC相同,尽管符号可以反转),相应的特征值E代表方差量解释(与latent相同)。注意,习惯上用它们的特征值对主成分进行排序。和以前一样,为了在新坐标中表达数据,我们只需计算X*V(如果您确保匹配符号,则应与上面的score相同)

    展开全文
  • matlab主成分分析代码

    千次阅读 2019-01-28 10:19:26
    matlab主成分分析代码 function y=zhuchengfenfenxi() clc,clear gj=xlsread('RES2016-zhuchengfen.xlsx');%把原始数据保存在纯文本文件gj.txt中 gj=zscore(gj); %数据标准化 r=corrcoef(gj); %计算相关系数...

    matlab主成分分析代码

    function y=zhuchengfenfenxi()
    clc,clear
    gj=xlsread('RES2016-zhuchengfen.xlsx');%把原始数据保存在纯文本文件gj.txt中 
    gj=zscore(gj); %数据标准化
    r=corrcoef(gj); %计算相关系数矩阵
    %下面利用相关系数矩阵进行主成分分析,x的列为r的特征向量,即主成分的系数 
    [x,y,z]=pcacov(r) %y为r的特征值,z为各个主成分的贡献率 
    f=repmat(sign(sum(x)),size(x,1),1); %构造与x同维数的元素为±1的矩阵 
    x=x.*f; %修改特征向量的正负号,每个特征向量乘以所有分量和的符号函数值 
    num=6; %num为选取的主成分的个数
    df=gj*x(:,1:num); %计算各个主成分的得分 
    tf=df*z(1:num)/100; %计算综合得分 
    [stf,ind]=sort(tf,'descend'); %把得分按照从高到低的次序排列 
    stf=stf', ind=ind'
    
    
    展开全文
  • matlab主成分分析

    2011-01-18 10:30:51
    介绍matlab主成分分析法相关内容,doc文件,更多内容请见文章内部把
  • 基于matlab主成分分析与因子分析文件“实验七.xls” sheet1列出了三个美国制造商所生产的早餐方便粥的数据,这三家厂商是:通用牛奶,克罗格和夸克。将早餐方便粥的品牌按照厂商分组,每个品牌测量的指标有:卡路里...
  • 1、因子分析中是把变量表示成各因子的线性组合,而主成分分析中则是把主成分表示成个变量的线性组合。2、主成分分析的重点在于解释个变量的总方差,而因子分析则把重点放在解释各变量之间的协方差。3、主成分分析中...
  • 主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法,这些主成分能够反映原始变量的大部分信息,通过表示为原始变量的线性组合,为了使得这些主成分所包含的信息互不重...
  • Matlab自身有主成分分析的函数princomp,其中返回的第二个数据就是样本经过K-L变换后的各个成分数据,第三个参数就是特征值大小。(第一个参数貌似是协方差矩阵,我还没看)PCA的基本原理:一般图像的线性变换可以表示...
  • Matlab主成分分析

    万次阅读 多人点赞 2018-03-06 11:14:07
    主成分分析又称主分量分析,由皮尔逊在1901年首次引入,后来由霍特林在1933年进行了发展。主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法,这些主成分能够反映原始变量的大...
  • MATLAB主成分分析源代码及工具箱。计算协差矩阵、特征根和特征向量、方差贡献率;累计方差贡献率、相关系数矩阵,简单实用,欢迎大家下载。
  • 联系:都可以降维、分析多个变量的基本结构因子分析是主成分分析的进一步推广。主成分分析可被视为一种固定效应的因子分析,是因子分析的特列都是利用变量之间的相关性将它们进行分类主成分分析中,各个主成分之间...
  • 14 MATLAB主成分分析

    万次阅读 多人点赞 2017-05-07 07:56:04
    主成分分析又称主分量分析,由皮尔逊在1901年首次引入,后来由霍特林在1933年进行了发展。主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法,这些主成分能够反映原始变量的大...
  • 及(,)0,1,2,..., 1.T i k i k Cov Y Y l l k i =∑==-下,求 l i 使 Var(Y i )达到最大,由此 l i 所确定的T i i Y l X =称为 X 1,X 2,…,X p 的第 i 个主成分。 1.2 总体主成分的计算设 ∑是12(,,...,)T p X X X...
  • 主成分分析matlab实现完整程序主成分分析1.概述Matlab语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的...
  • 作者:张楷露、张琪 封面:自己想吧一、基本思想的异同共同点 从二者表达的含义上看,主成分分析法和因子分析法都寻求少数的几个变量(或因子)来综合反映全部变量(或因子)的大部分信息,变量虽然较原始变量少,但所...
  • matlab调用格式为:mA=mean(samples),如下图: 1、求偏差矩阵,即每个向量跟均值作差 张三李四王五的ABC向量分别减去平均向量mA,即samples-mA,对应像素相减,结果为下图所示: 因工作原因,MATLAB主成分PCA人脸...
  • MATLAB主成分分析

    2019-07-27 10:39:43
    主成分分析又称主分量分析,由皮尔逊在1901年首次引入,后来由霍特林在1933年进行了发展。主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法,这些主成分能够反映原始变量的大...
  • 主成分分析利用降维(线性变换)的思想,在损失很少信息的前提下把多个指标转化为几个不相关的综合指标,即每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,使得主成分比原始变量具有某些更优越的性能...
  • matlab主成分分析和因子分析

    千次阅读 2018-10-13 21:17:04
    matlab中用于主成分分析的函数有 1.princomp  功能:主成分分析  格式:PC=princomp(X)  [PC,SCORE,latent,tsquare]=princomp(X)  说明:[PC,SCORE,latent,tsquare]=princomp(X)对数据矩阵X进行主成分分析,给...
  • 主成分分析 Principal Component Analysis(PCA)1. 什么是主成分分析? What is PCA?Principal component analysis (PCA) is a statistical procedure that uses an orthogonal transformation to convert a set of ...
  • (终于完成了西电的魔鬼考试周,接下来的时间继续恢复更新博客的速度)主成分分析(Principal Component Analysis)的主要目的是希望用较少的变量去解释原来资料中的大部分变异,选出比原始特征值个数少的变量,构建能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 759
精华内容 303
关键字:

matlab主成分分析

matlab 订阅