主成分分析(PCA)

一种降维算法,能将多个指标转换为少数几个主成分
这些主成分是原始变量的线性组合,且彼此互不相关。其能反映出原始数据的大部分信息。
一般而言,当研究问题涉及到多变量且变量之间存在很强的相关性,考虑使用主成分分析的方法对数据进行简化

降维:
是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的
优点:
使得数据集更易使用;
降低算法的计算开销;
去除噪声;
使得结果容易理解
主成分分析的思想

如何确定主成分变量的系数lij等?

PCA的计算步骤

第一步,对其进行标准化处理

X=zscore(x);% matlab内置的标准化函数,等同于(x-mean(x))/std(x),即数据-均值除以标准差 ,得矩阵X

第二步,计算标准化样本的协方差矩阵

R = cov(X) %利用cov函数,得矩阵R,R是对称矩阵


可见矩阵特点,矩阵对角线为1,,和为p

第三步,计算R的特征值和特征向量

[V,D] = eig(R);% V 特征向量矩阵  D 特征值构成的对角矩阵


第四步,计算主成分贡献率以及累计贡献率

lambda = diag(D);  % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
lambda = lambda(end:-1:1);  % 因为lambda向量是从小大到排序的,我们将其调个头
contribution_rate = lambda / sum(lambda);  % 计算贡献率
cum_contribution_rate = cumsum(lambda)/ sum(lambda);   % 计算累计贡献率  cumsum是求累加值的函数

第五步,确定主成分

m =input('请输入需要保存的主成分的个数:  ');
F = zeros(n,m);  %初始化保存主成分的矩阵(每一列是一个主成分)
for i = 1:mai = V(:,i)';   % 将第i个特征向量取出,并转置为行向量Ai = repmat(ai,n,1);   % 将这个行向量重复n次,构成一个n*p的矩阵F(:, i) = sum(Ai .* X, 2);  % 注意,对标准化的数据求了权重后要计算每一行的和
end

1.对于某个主成分而言,指标前系数越大,代表该指标对于该主成分分析影响越大
2.主成分分析可用于聚类分析、回归分析

主成分聚类
将前面得到的主成分矩阵F,转到excel,再转入spss中

之后与实现系统聚类中步骤相同,做出谱系图,做聚合系数折线图利用肘部准则确定合适的聚类个数,随后再次系统聚类选定聚类个数进行聚类
例如聚3类:

主成分聚类最大的意义是能帮我们可视化最后的聚类效果
菜单栏:图形-图表构建器


关于主成分分析

关于所取主成分的解释例子:


代码:

clear;clc  %清屏
load data1.mat   % 导入数据集[n,p] = size(x); % n是样本个数,p是指标个数%% 第一步:对数据x标准化为X
X=zscore(x);   % matlab内置的标准化函数(x-mean(x))/std(x)%% 第二步:计算样本协方差矩阵
R = cov(X);disp('样本相关系数矩阵为:')
disp(R)%% 第三步:计算R的特征值和特征向量
% 注意:R是半正定矩阵,所以其特征值不为负数
% R同时是对称矩阵,Matlab计算对称矩阵时,会将特征值按照从小到大排列
[V,D] = eig(R);  % V 特征向量矩阵  D 特征值构成的对角矩阵%% 第四步:计算主成分贡献率和累计贡献率
lambda = diag(D);  % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
lambda = lambda(end:-1:1);  % 因为lambda向量是从小大到排序的,我们将其调个头
contribution_rate = lambda / sum(lambda);  % 计算贡献率
cum_contribution_rate = cumsum(lambda)/ sum(lambda);   % 计算累计贡献率  cumsum是求累加值的函数
disp('特征值为:')
disp(lambda')  % 转置为行向量,方便展示
disp('贡献率为:')
disp(contribution_rate')
disp('累计贡献率为:')
disp(cum_contribution_rate')
disp('与特征值对应的特征向量矩阵为:')
% 注意:这里的特征向量要和特征值一一对应,之前特征值相当于颠倒过来了,因此特征向量的各列需要颠倒过来
%  rot90函数可以使一个矩阵逆时针旋转90度,然后再转置,就可以实现将矩阵的列颠倒的效果
V=rot90(V)';
disp(V)%% 计算我们所需要的主成分的值
m =input('请输入需要保存的主成分的个数:  ');
F = zeros(n,m);  %初始化保存主成分的矩阵(每一列是一个主成分)
for i = 1:mai = V(:,i)';   % 将第i个特征向量取出,并转置为行向量Ai = repmat(ai,n,1);   % 将这个行向量重复n次,构成一个n*p的矩阵F(:, i) = sum(Ai .* X, 2);  % 注意,对标准化的数据求了权重后要计算每一行的和
end

数学建模-14.主成分分析PCA相关推荐

  1. 数学建模之主成分分析(PCA)

    本文参考的是司守奎,孙兆亮主编的数学建模算法与应用(第二版) 由于在学习数学建模的过程中,复现建模书上的题目代码有点小麻烦,因为我找不着书上的数据,因此得一个个手打,本来已经复现了好几个模型,结果因为 ...

  2. 数学建模—降维—主成分分析(PCA)

    (清风数学建模笔记)(可用python或者matlab实现) 主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,且能反映出原始数据的大部 ...

  3. 数学建模之主成分分析法

    评价方法大体可分为两类,其主要区别在确定权重的方法上.一类是主观赋权法,多数采取综合咨询评分确定权重,如综合指数法,模糊综合评价法,层次分析法,功效系数法等.另一类是客观赋权,根据各指标间相关关系或各 ...

  4. 【数学建模】数据处理问题

    一.插值与拟合 常用于数据的补全以及趋势分析 1.插值 总的思想,就是利用函数f (x)若干已知点的函数值,求出适当的特定函数g(x).这样f(x)其他未知点上的值,就可以用g(x)在这一点的值来近似 ...

  5. 数学建模学习视频及资料集(2022.08.10)

    2021高中数学建模(应用)能力展示活动细则详解(上) 2021高中数学建模(应用)能力展示活动细则详解(上)_哔哩哔哩_bilibili 2021高中数学建模(应用)能力展示活动细则详解(下) 20 ...

  6. 清风数学建模学习笔记——主成分分析(PCA)原理详解及案例分析

    主成分分析   本文将介绍主成分分析(PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息. 一般 ...

  7. 数学建模——主成分分析算法详解Python代码

    数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...

  8. 数学建模(六) 主成分分析,聚类分析,对策论,马氏链

    全并到一起写是因为我只想写十篇. 1.主成分分析 PCA!!! 主成分分析(Principal Component Analysis, PCA),将多个变量通过线性变换以选出较少个数重要变量的一种多元 ...

  9. 数学建模笔记-第十四讲-主成分分析

    文章目录 主成分分析 数据降维 主成分分析思想 PCA计算过程 主成分分析的应用 例1 主成分的说明 例2 MATLAB 对结果的解释 主成分分析的滥用:主成分得分 主成分分析用于聚类 主成分回归 说 ...

最新文章

  1. SAP RETAIL 为门店代码维护Plant Group
  2. ubuntu下打开matlab_ubuntu终端命令启动matlab方法
  3. mysql创建数据库并且指定utf-8编码
  4. Spring Boot + Spring Cloud 实现权限管理系统 (系统服务监控)
  5. mysql六:索引原理与慢查询优化
  6. 从1天到10分钟的超越,华为云DRS在背后做了这些
  7. 阿里京东被怼假货泛滥;谷歌 CEO 承认中国版搜索 App 存在;YouTube 全球宕机 | 极客头条...
  8. 华为鸿蒙系统ui界面会变吗,华为鸿蒙系统:全新UI界面
  9. get方式乱码post方式不会乱码原因
  10. 02.环境准备-idea配置maven
  11. 【prescan入门】prescan入门教程(场景搭建、参数设置、连接MATLAB实现仿真)
  12. 华为LACP的相关配置命令
  13. python数据分析与展示 嵩天_【学习笔记】PYTHON数据分析与展示(北理工 嵩天)
  14. 计算机二级办公软件高级应用有什么用,考计算机二级办公软件高级应用技术证书有什么用途...
  15. css固定定位的代码,CSS——相对定位、绝对定位、固定定位(示例代码)
  16. 个人力扣刷题笔记 LCP 03. 机器人大冒险
  17. 【STM32f10】MDK编译报错:Undefined symbol TIM3_PWM_Init (referred from main.o)
  18. python灰色预测_python实现灰色预测模型(GM11)——以预测股票收盘价为例
  19. 【Linux网络编程】域名转IP后的一些深层(计算机底层)的思考
  20. android开机动画和图片在那个目录下,Android开机动画bootanimation.zip是怎么制作和使用的?...

热门文章

  1. 关注Ionic底部导航按钮tabs在android情况下浮在上面的处理
  2. 无法安装操作系统,An unexpected error(0) occurred at line 1768 in f:\nt2\base\boot\setup\arcdisp.c....
  3. B django模型系统(后续1)
  4. SpringBoot配置swagger2(亲测有效,如果没有配置成功,欢迎在下方留言)
  5. iOS开发----UI部分----iPhone各类屏幕的分辨率
  6. R语言:ggplot2精细化绘图——以实用商业化图表绘图为例
  7. 【STL】算法 — partial_sort
  8. SQLSERVER聚集索引的整理(重建)的必要性测试
  9. Colourshell:给 shell 命令着色
  10. vs 2005 多語言