当前位置:网站首页>主成分分析(MATLAB)
主成分分析(MATLAB)
2022-07-23 13:12:00 【Wolves_YY】
本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:清风数学建模:https://www.bilibili.com/video/BV1DW411s7wi
一、前言



二、主成分分析思想


三、 主成分分析计算步骤
计算步骤可放入论文中。
step1:对数据x标准化为X

step2:计算样本协方差矩阵(相关系数矩阵)

相关系数矩阵可美化后放入论文中,详见视频17:40 。
注:第一步和第二步在MATLAB中可直接一步到位。
step3:计算R的特征值和特征向量

step4:计算主成分贡献率和累计贡献率

step5:写出主成分,取累计贡献率超过80%的特征值所对应的主成分

step6: 根据系数分析主成分代表的意义

step7: 利用主成分的结果进行后续的分析

不能用于评价模型原因:降维是将有数据的指标进行减少,既然有数据何不用Topsis?

四、例题讲解

此题直接进行到了第二步,实际中不会这样。



五、主成分分析程序(MATLAB)
该数据为聚类数据
clear;clc
load data1.mat % 主成分聚类
% load data2.mat % 主成分回归
% 注意,这里可以对数据先进行描述性统计
% 描述性统计的内容见第5讲.相关系数
[n,p] = size(x); % n是样本个数,p是指标个数
%% 第一步:对数据x标准化为X
X=zscore(x); % matlab内置的标准化函数(x-mean(x))/std(x)
%% 第二步:计算样本协方差矩阵
R = cov(X);
%% 注意:以上两步可合并为下面一步:直接计算样本相关系数矩阵
R = corrcoef(x);
disp('样本相关系数矩阵为:')
disp(R)
%% 第三步:计算R的特征值和特征向量
% 注意:R是半正定矩阵,所以其特征值不为负数
% R同时是对称矩阵,Matlab计算对称矩阵时,会将特征值按照从小到大排列哦
% eig函数的详解见第一讲层次分析法的视频
[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:m
ai = V(:,i)'; % 将第i个特征向量取出,并转置为行向量
Ai = repmat(ai,n,1); % 将这个行向量重复n次,构成一个n*p的矩阵
F(:, i) = sum(Ai .* X, 2); % 注意,对标准化的数据求了权重后要计算每一行的和
end
代码结果分析:

六、主成分分析用于聚类(SPSS)
这里的聚类和下面的回归可以详看视频。


这里的聚类是用的层次聚类

七、主成分分析用于聚类(Stata)


八、其他

边栏推荐
- 国产AI蛋白质结构预测再现突破,用单条序列解决3D结构,彭健团队:“AlphaFold2以来最后一块拼图补齐了”...
- leetcode-67.二进制求和
- 华为新版Datacom认证介绍
- mysql的常见问题
- YOLOV7
- 2022-7-22 面经复习+简单题目整理
- 【Error】TypeError: expected str, bytes or os.PathLike object, not int
- 阿里平头哥CPU技术生态负责人陈炜:平头哥的发展之路
- Circuit structure and output mode of GPIO port of 32-bit single chip microcomputer
- 百度编辑器上传图片设置自定义目录
猜你喜欢
![[2022 freshmen learning] key points of the second week](/img/5f/87a30e898b4450af5f2eb0cf77e035.png)
[2022 freshmen learning] key points of the second week

The new business form of smart civil aviation has emerged, and Tupo digital twin has entered the civil aviation flight network of the Bureau

腾讯云获国际专业流媒体测评肯定:三大场景下视频编码性能全部最优

Numpy 数据分析基础知识第一阶段(NumPy基础)

48:第五章:开发admin管理服务:1:创建子工程【imooc-news-dev-service-admin】,管理服务模块;

(已解决)idea编译Gradle项目提示 错误找不到符号

FreeRTOS个人笔记-挂起/解挂任务

一道反序列化的CTF题分享

动态规划背包问题之多重背包详解

一款非常棒的开源微社区轻论坛类源码
随机推荐
SSD: Single Shot MultiBox Detector
Convolutional neural network model -- googlenet network structure and code implementation
机器狗背冲锋枪射击视频火了,网友瑟瑟发抖:stooooooooppppp!
Frequently asked questions about MySQL
CloudCompare&PCL 法向量空间采样(NSS)
实时疫情数据可视化分析
层次分析法(MATLAB)
距7月30日PMP考试不足10天,应该做点什么?
How does MySQL query data that is not in the database?
Study note 7 -- traffic environment behavior prediction
(已解决)idea编译Gradle项目提示 错误找不到符号
【笔记】线性回归
基于APISIX的basic-auth插件对Minio文件上传功能进行授权
Nifi 1.16.3 集群搭建+kerberos+用户认证
自定义一个对象
USB基础
移动、电信、联通:5G To B的花式解法
anchor free yolov1
pytest接口自动化测试框架 | 多进程运行用例
20220721 beaten content