主成分分析的优缺点:

优点:化繁为简,降低了计算量。

缺点:一定程度上损失了精度。并且只能处理“线性问题”,这是一种线性降维技术。

总结:

假设我们拿到了一份数据集,有m个样本,每个样本由n个特征(变量)来描述,那么我们可以按照以下的步骤进行降维:

1、将数据集中的每个样本作为列向量,按列排列构成一个n行m列的矩阵;

2、将矩阵的每一个行向量(每个变量)都减去该行向量的均值,从而使得新行向量的均值为0,得到新的数据集矩阵X;

3、求X的协方差矩阵,并求出协方差矩阵的特征值λ和单位特征向量e;

4、按照特征值从大到小的顺序,将单位特征向量排列成矩阵,得到转换矩阵P,并按PX计算出主成分矩阵;

5、用特征值计算方差贡献率和方差累计贡献率,取方差累计贡献率超过85%的前k个主成分,或者想降至特定的k维,直接取前k个主成分。

主成分分析代码:

function [tg xs q px newdt]=pca(h)  %输入只能是以分析的指标变量为列,样本变量为行的数据!
h=zscore(h); %数据标准化
r=corrcoef(h); %计算相关系数矩阵
disp('计算的相关系数矩阵如下:');
disp(r);
[x,y,z]=pcacov(r);  %计算特征向量与特征值
s=zeros(size(z));
for i=1:length(z)s(i)=sum(z(1:i));
end
disp('由上计算出相关系数矩阵的前几个特征根及其贡献率:');
disp([z,s])
tg=[z,s];
f=repmat(sign(sum(x)),size(x,1),1);
x=x.*f;
n=input('请选择前n个需要计算的主成分:\n');
disp('由此可得选择的主成分系数分别为:');
for i=1:nxs(i,:)=(x(:,i)');
end
newdt=h*xs';
disp('以主成分的贡献率为权重,构建主成分综合评价模型系数:');
q=((z(1:n)./100)')
w=input('是否需要进行主成分综合评价?(y or n)\n');
if w==ydf=h*x(:,1:n);tf=df*z(1:n)/100;[stf,ind]=sort(tf,'descend'); %按照降序排列disp('主成分综合评价结果排序:');px=[ind,stf]
elsereturn;
end

主成分分析 Matlab相关推荐

  1. 美国国债主成分分析Matlab

    文章目录 美国国债主成分分析 Matlab 1.读入数据 2.PCA 3.主成分和宏观变量 美国国债主成分分析 Matlab 1.读入数据 [data,txt,raw] = xlsread('feds ...

  2. 主成分分析matlab实例及测试,[学习笔记]主成分分析说明以及matlab实现

    在研究问题过程中,随着问题中的变量增多,分析问题的难度与复杂度会不断加大.于是人们会想,如何用能保持变量原有特征的较少的新变量,代替原有的较多的旧变量,从而降低分析难度和复杂程度. 主成分分析就是把原 ...

  3. 主成分分析matlab代码实现

    转载自:https://blog.csdn.net/It_BeeCoder/article/details/80365563 方法一: 1:用zscore函数对原始数据S进行标准化. 2:用cov函数 ...

  4. Iris数据集用主成分分析MATLAB

    1.代码 filename = 'iris.csv'; data = csvread(filename); rawdata = data(:,2:5) a = data(data(:,1)==0,:) ...

  5. matlab主成分分析综合评价算法,matlab主成分分析算法

    从经济效益出发选取8个指标,利用主成分分析法对选取指标进行分析,利用Matlab软件对14家机械制造企业的经济效益进行了计算和排名,为黑龙江省今后实现企业间经济发展协调...... II. 主成分分析 ...

  6. LDA(线性判别分析)详解 —— matlab

    目录 前言 正题 1.LDA的思想 2. 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient) 3. 二类LDA原理 4.多类LDA原理 ...

  7. matlab包络分析函数,数据包络分析 (MATLAB代码).doc

    数据包络分析 (MATLAB代码) X=[] % 输入多指标输入矩阵X Y=[] % 输入多指标输出矩阵Y [n,m]=size(X) % n为输入的指标数,m为决策单元数 s=size(Y) % s ...

  8. 数学建模暑期集训21:主成分分析(PCA)

    当遇到指标众多的场景时,以前通常的处理方法基本采用逐步回归的思想.即判断各指标之间的相关程度,保留几个重要的指标, 剔除其它不重要的指标.相关方法有:三大相关系数计算法.多元线性回归法.随机森林法.灰 ...

  9. 神经网络建模的基本思想,人工神经网络建模步骤

    利用人工神经网络建立模型的步骤 人工神经网络有很多种,我只会最常用的BP神经网络.不同的网络有不同的结构和不同的学习算法.简单点说,人工神经网络就是一个函数.只是这个函数有别于一般的函数.它比普通的函 ...

最新文章

  1. 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题
  2. Thread Join()的用法
  3. apache camel 相关配置_小白在 linux 系统部署apache、mysql、Laravel 环境学习笔记!
  4. keras 多个显卡
  5. Hbuilder----安装less插件(详细)
  6. 数据结构 --- 堆
  7. matlab里符号的写法,Matlab中特殊符号的写法
  8. 贝叶斯分析好坏_贝叶斯统计 | 第五章第一部分 决策基本概念
  9. Python小应用1 - 抓取网页中的链接地址
  10. 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决
  11. 支付宝调起,应用签名失败,请联系商家
  12. 验证码识别库 python_python 验证码识别库pytesseract的使用
  13. oracle间视图增量同步,ODI数据增量同步
  14. ZYNQ学习之路5.扩展PL端串口
  15. 基金定投--1.基金的基础知识
  16. Redis——Redis入门和一些笔记
  17. A State-of-the-Art Survey on Deep Learning Theory and Architectures论文翻译分析
  18. 归并排序【算法解析,代码模板】
  19. ctfshow 爆破 web21-web28
  20. 中国传统配色网站,你不了解一下吗??

热门文章

  1. VTK_Learning_三维图像切片(一)
  2. 引起cpu流水线阻塞的三个原因
  3. CPU的流水线指令设计
  4. Windows XP 的序列号
  5. linux ftp 删文件夹,Linux FTP账号无法删除文件夹如何解决
  6. wordpress安装插件提示需要ftp账号和密码解决
  7. 客户端服务器信息交互,select实现客户端和服务器端的信息交互(TCP socket)
  8. php编程之错误与异常
  9. led gamma correction 算法
  10. 2022华为杯研究生数学建模竞赛DS数模选题建议