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

    2013-11-08 13:51:43
    比较好的主成分分析代码,主成分分析主要用于聚类分析和回归建模
  • 主成分分析代码.txt

    2020-05-27 09:56:48
    主成分分析代码.txt
  • matlab的PCA主成分分析代码
  • 主成分分析代码实现+原理,代码在博客里都有,这是完整的VS2015工程。原理见博文:https://blog.csdn.net/a435262767/article/details/108554705
  • 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'
    
    
    展开全文
  • PCA 主成分分析代码 MATLAB版

    热门讨论 2008-11-16 10:39:50
    PCA 主成分分析代码 MATLAB版 PCA 主成分分析代码 MATLAB版 PCA 主成分分析代码 MATLAB版
  • 联系:都可以降维、分析多个变量的基本结构因子分析是主成分分析的进一步推广。主成分分析可被视为一种固定效应的因子分析,是因子分析的特列都是利用变量之间的相关性将它们进行分类主成分分析中,各个主成分之间...

      联系:

    • 都可以降维、分析多个变量的基本结构

    • 因子分析是主成分分析的进一步推广。主成分分析可被视为一种固定效应的因子分析,是因子分析的特列

    • 都是利用变量之间的相关性将它们进行分类

    • 主成分分析中,各个主成分之间互不相关;因子分析中,公因子之间不相关、特殊因子之间不相关、公因子与特殊因子之间不相关

    区别:

    • 主成分分析只是利用变量的相关性来将变量降维与简化问题,只是“综合”;而因子分析则主要考察这些相关性背后的原因——因子

    • 主成分分析:主成分是变量的线性组合;因子分析:变量是因子的线性组合。一个使用合成型变量,一个使用反映型变量。

    • 主成分一般是固定的,而因子不是固定的,可以旋转得到不同的因子

    • 主成分分析常被用于回归模型,用于回归模型的降维和解决多重共线问题,而因子分析常被用于结构方程模型,用于测量出结构方程模型的潜变量。

    • 主成分没有实质意义,只是一个综合指数,只需对主成分进行经济解释;而因子具有客观的实质意义,需要对因子进行命名

    • 主成分分析只有主成分法一种,而因子分析有主轴因子法、主成分因子法、迭代主轴因子法、极大似然因子法等多种方法

    • 主成分分析不要求数据来自正态总体,而因子分析一般要求服从多元正态分布

    • 因子是不可直接观测的潜变量,对指标具有决定或影响的作用;而主成分只是显变量的线性组合,指标不受主成分的影响。


      7697cb454fa78fa0cd571c95d7502379.png

    展开全文
  • 代码为主成分分析的matlab代码,使用一个简单例子对代码进行实现,对于数学建模中实现的matlab算法设计中有较大帮助,并且对于掌握使用matlab进行设计主成分分析方法有很好的借鉴作用
  • 对统计数据进行主成分分析的软件有很多很多,这里不一一列举,在这里介绍一种用MATLAB软件来实现主成分分析这一方法,提供相应的代码
  • 作者:张楷露、张琪 封面:自己想吧一、基本思想的异同共同点 从二者表达的含义上看,主成分分析法和因子分析法都寻求少数的几个变量(或因子)来综合反映全部变量(或因子)的大部分信息,变量虽然较原始变量少,但所...

    52280d729ee42449c1b2faa3cf4b0ef4.gif

    作者:张楷露、张琪   封面:自己想吧

    80e666a4981cd82bbe66b0b4de6266b4.png

    一、基本思想的异同

    42cb184f83b4dd063cc2f0a68b43c099.pngd1d876d4901c83ec7049090ad2d58a38.png

    共同点

    3c6567e680d57685756242115fd14ccb.png

           从二者表达的含义上看,主成分分析法和因子分析法都寻求少数的几个变量(或因子)来综合反映全部变量(或因子)的大部分信息,变量虽然较原始变量少,但所包含的信息量却占原始信息量的 85%以上,用这些新变量来分析问题,其可信程度仍然很高,而且这些新的变量彼此间互不相关,消除了多重共线性。这两种分析法得出的新变量,并不是原始变量筛选后剩余的变量。

    d1d876d4901c83ec7049090ad2d58a38.png

    不同点

    3c6567e680d57685756242115fd14ccb.png

    在主成分分析中,最终确定的新变量是原始变量的线性组合,如原始变量为x1,x2,……,x3,经过坐标变换,将原有的p个相关变量xi 作线性变换,每个主成分都是由原有p 个变量线性组合得到。在诸多主成分Zi 中,Z1 在方差中占的比重最大,说明它综合原有变量的能力最强,越往后主成分在方差中的比重也小,综合原信息的能力越弱。

    因子分析是要利用少数几个公共因子去解释较多个要观测变量中存在的复杂关系,它不是对原始变量的重新组合,而是对原始变量进行分解,分解为公共因子与特殊因子两部分。公共因子是由所有变量共同具有的少数几个因子;特殊因子是每个原始变量独自具有的因子。

    80e666a4981cd82bbe66b0b4de6266b4.png

    二、操作软件中的异同

    42cb184f83b4dd063cc2f0a68b43c099.png

    主成分分析与因子分析都可利用 SPSS 软件中的 FACTOR 过程来实现,在此过程中应该注意以下几点:

    1.指标的选定

    指标最好具有同趋势化,一般为了评价分析的方便,需要将逆指标转化为正指标。

    2.假设条件

    主成分分析:不需要有假设(assumptions)
    因子分析:需要一些假设。因子分析的假设包括:各个共同因子之间不相关,特殊因子(specificfactor)之间也不相关,共同因子和特殊因子之间也不相关。 

    3.因子变量个数的确定

    在利用 FACTOR 实现主成分分析时,在确定公共因子个数时,一般直接选择与原变量数目相等的个数,这样可以避免由于采用默认形式后累积方差贡献率达不到 85%而造成的二次操作。

    在利用FACTOR实现因子分析时,可以选择的选项较多,除了主成分分析法之外,还有未加权最小平方法、广义最小平方法、最大似然法、主轴因式分解法、Alpha式分解法、映像因式分解法。这七种方法中只有用主成分分析法求解因子载荷时可以选择与变量个数相等的因子变量个数,其它方法都必须因子变量个数小于原始变量个数。

    4.模型的生成

    经过 FACTOR 过程都产生因子载荷阵,但主成分分析模型需要的不是因子载荷量而是特征向量,所以还需要将因子载荷量输入到数据的编辑窗口,利用“主成分相应特征根的平方根与特征向量乘积为因子载荷量”性质来计算特征向量,从而得到主成分的线性表达式。

    因子分析直接采用因子载荷量即可得到因子模型。

    5.计算得到的方法

    主成分是根据表达式将标准化后的相应数据代入得到的。主成分得分一般用来对研究现象进行综合评价、排序及筛选变量。

    因子得分的计算在 SPSS 中提供了三种方法:一是回归法;二是巴特莱特法;三是安德森-鲁宾法,这种方法是为了保证因子的正交性而对巴氏方法的因子得分进行的调整,其因子得分的均值为 0,方差为 1。因子得分多用于对样本及变量的分类,也可用于综合评价。

    6.有关统计量的取得

    有关因子载荷的统计量在 SPSS 输出窗口可直接得到,如变量与公共因子的相关系数,实际上为所求得的因子载荷量;变量共同度(反映每个变量对所提取的公共因子的依赖程度的统计量)可由输出窗口中的“component commulity”中直接显示出来,提取的因子个数不同,变量共同度也不同。

    另外,公共因子的方差(反映每个公因子与所有变量的相关程度的统计量)可由“extraction sums of squared loadings”直接读出。

    7.解释重点不同

    主成分分析:重点在于解释个变量的总方差;

    因子分析:则把重点放在解释各变量之间的协方差。 

    1

    END

    1

    89e7faa46f466787f08d0de9b98354f9.png

    fcf1f50c2e17b6717b0d4ba49b06afb8.png

    学堂君的历史合辑:

      菜鸟也爱数据分析之SPSS篇

      问卷设计与统计分析

      线性回归

      量表信效度分析

      聚类分析

      时间序列分析

      粉丝常见问题

    欢迎添加:

    【数据分析服务】微信号:LYJ_312

     【社群服务助手】微信号:spss_shequn

     【加入团队】:请点击招募,我们是认真的!

    6b426ca79b1b71c7a0cb0e2ae9d15b5b.gif

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

    2014-08-01 10:26:04
    实现PCA主成分分析,保留前N个主成分,返回投影坐标系,内有详尽说明。
  • 使用matlab实现了主成分分析,通过修改数据集,可以直接使用
  • 文章目录主成分分析代码(手写数字识别)导入模块数据预处理KNN训练数据准确度降维(2维)KNN训练数据准确度二维特征方差比例查看原始数据特征方差比例主成分所占方差比例保留原始维度的80%的维度查看主成分个数降维(13...

    主成分分析代码(手写数字识别)

    在这里插入图片描述

    导入模块

    import time
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.font_manager import FontProperties
    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    from sklearn.decomposition import PCA
    from sklearn.neighbors import KNeighborsClassifier
    %matplotlib inline
    font = FontProperties(fname='/Library/Fonts/Heiti.ttc')
    

    数据预处理

    # 导入手写识别数字数据集
    digits = datasets.load_digits()
    X = digits.data
    y = digits.target
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
    

    KNN训练数据

    knn = KNeighborsClassifier()
    knn.fit(X_train, y_train)
    
    KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
               metric_params=None, n_jobs=None, n_neighbors=5, p=2,
               weights='uniform')
    

    准确度

    knn.score(X_train, y_train)
    
    0.9866369710467706
    

    降维(2维)

    pca = PCA(n_components=2)
    
    pca.fit(X_train)
    X_train_reduction = pca.transform(X_train)
    X_test_reduction = pca.transform(X_test)
    

    KNN训练数据

    begin = time.time()
    knn = KNeighborsClassifier()
    knn.fit(X_train_reduction, y_train)
    end = time.time()
    print('训练耗时:{}'.format(end-begin))
    
    训练耗时:0.0011568069458007812
    

    准确度

    knn.score(X_test_reduction, y_test)
    
    0.6266666666666667
    

    二维特征方差比例

    pca.explained_variance_ratio_
    
    array([0.14566794, 0.13448185])
    

    查看原始数据特征方差比例

    pca = PCA(n_components=X_train.shape[1])
    pca.fit(X_train)
    pca.explained_variance_ratio_
    
    array([1.45667940e-01, 1.34481846e-01, 1.19590806e-01, 8.63833775e-02,
           5.90548655e-02, 4.89518409e-02, 4.31561171e-02, 3.63466115e-02,
           3.41098378e-02, 3.03787911e-02, 2.38923779e-02, 2.24613809e-02,
           1.81136494e-02, 1.81125785e-02, 1.51771863e-02, 1.39510696e-02,
           1.32079987e-02, 1.21938163e-02, 9.95264723e-03, 9.39755156e-03,
           9.02644073e-03, 7.96537048e-03, 7.64762648e-03, 7.10249621e-03,
           7.04448539e-03, 5.89513570e-03, 5.65827618e-03, 5.08671500e-03,
           4.97354466e-03, 4.32832415e-03, 3.72181436e-03, 3.42451450e-03,
           3.34729452e-03, 3.20924019e-03, 3.03301292e-03, 2.98738373e-03,
           2.61397965e-03, 2.28591480e-03, 2.21699566e-03, 2.14081498e-03,
           1.86018920e-03, 1.57568319e-03, 1.49171335e-03, 1.46157540e-03,
           1.17829304e-03, 1.06805854e-03, 9.41934676e-04, 7.76116004e-04,
           5.59378443e-04, 3.65463486e-04, 1.71625943e-04, 8.78242589e-05,
           5.20662123e-05, 5.19689192e-05, 4.16826522e-05, 1.50475650e-05,
           4.42917130e-06, 3.53610879e-06, 7.14554374e-07, 6.80092943e-07,
           3.48757835e-07, 8.17776361e-34, 8.17776361e-34, 7.97764241e-34])
    

    主成分所占方差比例

    plt.plot([i for i in range(X_train.shape[1])],
             [np.sum(pca.explained_variance_ratio_[:i+1]) for i in range(X_train.shape[1])],c='r')
    plt.xlabel('前n个主成分',fontproperties=font)
    plt.ylabel('前n个主成分方差所占比例',fontproperties=font)
    plt.show()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hTSGowkv-1583199272278)(05-05%20%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E4%BB%A3%E7%A0%81%28%E6%89%8B%E5%86%99%E6%95%B0%E5%AD%97%E8%AF%86%E5%88%AB%29_files/05-05%20%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E4%BB%A3%E7%A0%81%28%E6%89%8B%E5%86%99%E6%95%B0%E5%AD%97%E8%AF%86%E5%88%AB%29_20_0.png)]

      通过上图可以确定取多少比例的主成分能平衡模型的准确率和训练速度。

    保留原始维度的80%的维度

    # 0.95表示保留原始维度的80%的维度
    pca = PCA(0.80)
    pca.fit(X_train)
    
    PCA(copy=True, iterated_power='auto', n_components=0.8, random_state=None,
      svd_solver='auto', tol=0.0, whiten=False)
    

    查看主成分个数

    pca.n_components_
    
    13
    

    降维(13维)

    X_train_reduction = pca.transform(X_train)
    X_test_reduction = pca.transform(X_test)
    

    KNN训练数据

    begin = time.time()
    knn = KNeighborsClassifier()
    knn.fit(X_train_reduction, y_train)
    end = time.time()
    print('训练耗时:{}'.format(end-begin))
    
    训练耗时:0.004214048385620117
    

    准确度

    knn.score(X_test_reduction, y_test)
    
    0.9844444444444445
    

    小结

    在这里插入图片描述

      主成分分析作为降维的作用,但是如果过分降维,降维到2维的时候可以看到模型的准确率非常低;如果降维到80%左右,准确度没有什么太大的影响。由于数据量过少,所以降维的优点即模型训练速度加快的优势并没有体现出来,但是在工业上PCA一定是通过丢失一部分信息+降低模型准确度换取模型训练速度。

    展开全文
  • (终于完成了西电的魔鬼考试周,接下来的时间继续恢复更新博客的速度)主成分分析(Principal Component Analysis)的主要目的是希望用较少的变量去解释原来资料中的大部分变异,选出比原始特征值个数少的变量,构建能...
  • 主成分分析代码实现

    千次阅读 2017-05-08 20:56:03
    如何利用python实现主成分分析法呢?本文给出了详细代码和案例
  • 第十章 多元分析第二节主成分分析介绍 这里是司守奎教授的《数学建模算法与应用》全书案例代码python实现,欢迎加入此项目将其案例代码用python实现 GitHub项目地址:Mathematical-modeling-algorithm-and-...
  • MATLAB主成分分析代码

    2010-08-20 21:20:05
    关于主成分分析的MATLAB程序,输出包括方差贡献率累积方差贡献率等。
  • 一文看懂PCA主成分分析中介绍了PCA分析的原理和分析的意义(基本简介如下,更多见博客),今天就用数据来实际操练一下。(注意:用了这么多年的PCA可视化竟然是错的!!!)在公众号后台回复“PCA实战”,获取测试数据...
  • 该程序适合那些对主成分分析的初学者,程序易懂!
  • 要什么资料直接添加科研小助理现在后台发消息我这边不太好接收啦感谢您的认可背景介绍多元统计分析multivariate statistical analysis研究客观事物中多个变量(或多个因素)之间相互依赖的统计规律性。它的重要基础之...
  • 过程:哈哈,我一下子调出来了,可以暂时不用修改分析 输出:识别图像 clear all close all clc % Training_Path = '../test/Gallery'; %Set your directory for training data file % Testing_Path = '../test/...
  • :array, shape (n_components, n_features),返回的是根据特征值进行排序后的主成分对应的特征向量 explained_variance_ :array, shape (n_components,),返回的n个主成分的方差值 explained_variance_ratio_ ...

空空如也

空空如也

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

主成分分析代码