数学建模之主成分分析(matlab算法)

2023-11-04

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

一般来说,当研究的问题涉及到多变量变量之间存在很强的相关性,我们可以考虑使用主成分分析的方法来对数据进行简化.

变量维数降低以便于描述、理解和分析的方法:主成分分析(principal component analysis

主成分分析所要做的就是设法将原来众多具有一定相关性的变量,

  1. 重新组合为一组新的相互无关的综合变量来代替原来变量。
  2. 从新的变量中筛选少数重要变量,这些重要变量能代表原变量的大多数信息。

 基本原理

x1x2xP为原变量指标,F1F2Fmmp)为新变量指标

 简写:

 主成分分析模型

 

 约束条件

1、主成分之间不相关。

2、主成分系数应该限制。

3、主成分方差从大到小排列。

 matlab指令部分

1.获取矩阵行列大小

a=size(X,1);%获得矩阵X的行大小
b=size(X,2);%获得矩阵X的列大小

2.matlab自动将数据标准化并存储到变量x中。

x=zscore(X);%数据标准化

 3.得到的相关系数矩阵 ,并存储到变量R中。

CM=corrcoef(x);%计算相关系数矩阵

4.用pcacov函数根据协方差矩阵或相关系数矩阵进行主成分分析。

[COEFF,latent,explained]=pcacov(CM)

 5.为了更加直观(x

result1(1,:)={'序号','特征值','贡献率','累计贡献率'}
c=1:b;
result1(2:b+1,1)=num2cell(c);
result1(2:b+1,2)=num2cell(latent);
result1(2:b+1,3)=num2cell(explained);
result1(2:b+1,4)=num2cell(cumsum(explained))

6.看贡献率,取相应数量的主成分进行分析。

% 以元胞数组形式显示主成分表达式  
s = {'标准化变量';'x1:';'x2: ';'x3: ';'x4: ';'x5: ';'x6: ';'x7: ';'x8: '}; 
result2(:,1) = s;   
result2(1, 2:4) = {'主成分1', '主成分2', '主成分3'}; 
result2(2:b+1, 2:4) = num2cell(COEFF(:,1:3))

数据是否一致化不影响主成分分析

7.由特征向量计算主成分得分

y=x*COEFF(:,1:3)  %计算引例中前三个主成分得分

8.分主成分的贡献率作为该主成分的权重

b=explained(1:3)./100 %计算各成分权重

 9.计算综合得分

z=y*b %计算综合得分

10.得分进行排序

[s,ind]=sort(z,'descend') %将得分按从高到低排序,从高到低是descend,去掉就是默认从低到高

matlab程序纯享版

a=size(X,1);%获得矩阵X的行大小
b=size(X,2);%获得矩阵X的列大小
x=zscore(X);%数据标准化
CM=corrcoef(x);%计算相关系数矩阵
[COEFF,latent,explained]=pcacov(CM)%总体主成分分析 COEFF是主成分系数矩阵 latent是特征值 explained是主成分贡献率(贡献率选超过累计85%的)
%为了更加直观
result1(1,:)={'序号','特征值','贡献率','累计贡献率'}
c=1:b;
result1(2:b+1,1)=num2cell(c);
result1(2:b+1,2)=num2cell(latent);
result1(2:b+1,3)=num2cell(explained);
result1(2:b+1,4)=num2cell(cumsum(explained))
% 以元胞数组形式显示主成分表达式  
s = {'标准化变量';'x1:';'x2: ';'x3: ';'x4: ';'x5: ';'x6: ';'x7: ';'x8: '}; 
result2(:,1) = s;   
result2(1, 2:4) = {'主成分1', '主成分2', '主成分3'}; 
result2(2:b+1, 2:4) = num2cell(COEFF(:,1:3))
%数据是否一致化不影响主成分分析
y=x*COEFF(:,1:3)  %计算引例中前三个主成分得分
b=explained(1:3)./100 %计算各成分权重
z=y*b %计算综合得分
[s,ind]=sort(z,'descend') %将得分按从高到低排序,从高到低是descend,去掉就是默认从低到高

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数学建模之主成分分析(matlab算法) 的相关文章

  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 在 Excel 中打印 MATLAB 图窗并调整其大小

    我在 MATLAB 中有两个带有手柄的图形hFig1 and hFig2 我想将它们打印到 Excel 中的特定单元格 单元格 E3 和 I3 并将它们重新调整为 2 英寸 x 3 英寸 我尝试过使用 AddPictures对象处理程序和使
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 将自动生成的 Matlab 文档导出为 html

    我想为我开发的 Matlab 工具箱生成完整的帮助 我已经看到如何显示自定义文档 http www mathworks fr fr help matlab matlab prog display custom documentation h
  • MATLAB 滚动图

    我有一个脑电图数据库 我想绘制它 数据库是一个19 1000 134的矩阵 其中 19 是通道数 在第一种方法中 我只使用一个渠道 1000 个样本大小 采样率为 500 Hz 时为 1000 个点 即 2 秒数据 134 epochs的数
  • Matlab中转换数据类型的有效方法(double vs. im2double)

    我想将真彩色图像转换为双精度 据我所知有两种方法可以做到这一点 double rgb img im2double rgb img 哪一种效率更高 谢谢 他们都是不同的 im2double将图像的范围转换为0 1如果数据类型是uint8 or
  • 如何使用matlab生成不同频率的正弦波?

    对于我的项目 我需要使用 matlab 生成一个正弦波 它有 100 000 个样本 并且频率在每 10 000 个样本后随机变化 采样率和频率可以根据方便而定 matlab中有没有函数可以生成这个 好的另一个例子 生成 5 个随机频率 r
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • 有没有办法在matlab中进行隐式微分

    我经常使用 matlab 来帮助我解决数学问题 现在我正在寻找一种在 matlab 中进行隐式微分的方法 例如 我想区分y 3 sin x cos y exp x 0关于dy dx 我知道如何使用数学方法通常做到这一点 但我一直在努力寻找使
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 如何告诉 mex 链接到 /usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的 libstdc++.so.6?

    现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4 4 6 但我想使用 gcc 4 7 风险自负 现在如果我直接用 mex 编译一些东西 它会抱怨 usr lib gcc i686 linux gnu 4 7 cc1plu
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • ROC曲线和libsvm

    给定一条 ROC 曲线plotroc m see here http www csie ntu edu tw cjlin libsvmtools roc curve for binary svm 理论问题 如何选择要使用的最佳阈值 编程问题
  • 检测数据集中线性行为的算法

    我已经发布了一个关于对数据集的一部分进行多项式拟合的算法 https stackoverflow com q 17595932 2320757前一段时间收到一些建议去做我想做的事 但我现在面临另一个问题 我尝试应用答案中建议的想法 我的目标

随机推荐

  • 利用Nginx配置文件转发

    编辑nginx conf内容 cd usr local nginx conf vi nginx conf 内容如下所示 error log logs error log error pid logs nginx pid user root
  • Docker-wordpress

    root 2c4g3m cd usr local src root 2c4g3m src curl fsSL https get docker com bash s docker mirror Aliyun root 2c4g3m src
  • linux实验文件管理,操作系统实验七Linux下的文件管理.pdf

    操作系统实验七Linux下的文件管理 操作系统实验七 Linux下的文件管理 一 实验目的 1 熟悉Linux 下常用的操作指令 2 加深对文件 目录 文件系统等概念的理解 3 掌握Linux 文件系统的目录结构 4 掌握有关Linux 文
  • PyTorch 提取中间层特征?

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 来源 机器学习算法与自然语言处理 编辑 忆臻 https www zhihu com question 68384370 本文仅作为学术分享 如果侵权 会删文处理 PyT
  • TCP/IP详解学习笔记

    TCP IP详解学习笔记 http blog csdn net goodboy1881 category 204448 aspx PageNumber 2 TCP IP详解学习笔记 3 IP协议 ARP协议 RARP协议 摘要 TCP IP
  • C#在linux上运行实现

    1 C 开发完了服务 2 部署到linux centos7上 3无法直接运行 解决方法 1 linux cenos7上安装mono 2 执行mono xxx exe 即可 解决方法2 下载 anyexec 1 2 linux x64 tar
  • C语言 leetcode刷题篇 删除有序数组中的重复项

    给你一个 升序排列 的数组 nums 请你 原地 删除重复出现的元素 使每个元素 只出现一次 返回删除后数组的新长度 元素的 相对顺序 应该保持 一致 由于在某些语言中不能改变数组的长度 所以必须将结果放在数组nums的第一部分 更规范地说
  • 跨域 访问总结

    文章转载自https segmentfault com a 1190000011145364 什么是跨域 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源 这里跨域是广义的 广义的跨域 1 资源跳转 A链接 重定向 表单提交 2 资源
  • Mybatis从头到尾(一)--MyBatis简介及项目搭建

    一 简介 MyBatis的前身是iBATIS 是ClintonBegin在2001年发起的一个开源项目 最初侧重于密码软件的开发 后来发展成为一款基于Java的持久层框架 2004年 Clinton将iBATIS的名字和源码捐赠给了Apac
  • labelme 5.0.1版本指南(二)labelme快捷键详解与修改

    如何自定义labelme的快捷键 非常简单也很实用 吐槽一下Ctrl J创建 Ctrl N编辑 对我的键盘很不友好 路径文件名是这个是这个 home mac labelmerc 打开以后可以看到各种快捷键 shortcuts close C
  • 深度学习06-pytorch从入门到精通

    文章目录 概述 环境准备 安装cuda和cudnn 安装pytorch 基础 张量 定义 numpy转换 数学函数 随机数 计算函数 矩阵处理函数 自动梯度 案例 计算图 torchvision模块 Transforms DataSet D
  • 鲜为人知的编程真相(转载)

    当程序员的经历让我知道了一些关于软件编程的事情 下面的这些事情可能会让朋友们对软件开发感到惊讶 一个程序员用在写程序上的时间大概占他的工作时间的10 20 大部分的程序员每天大约能写出10 12行的能进入最终的产品的代码 不管他的技术水平有
  • 数据量超过亿级别,MySQL大表迁移该如何做?

    MySQL 作为当前应用最广泛的开源关系型数据库之一 具有高性能 稳定性和易用性等特性 是许多网站 应用和商业产品的主要数据存储 在一些场景中 如果出现单表行数上亿的情况 就可能需要开发和 DBA 对大表进行优化 分表 归档或扩容操作 而在
  • std::shared_ptr 和 std::weak_ptr的用法以及引用计数的循环引用问题

    在std shared ptr被引入之前 C 标准库中实现的用于管理资源的智能指针只有std auto ptr一个而已 std auto ptr的作用非常有限 因为它存在被管理资源的所有权转移问题 这导致多个std auto ptr类型的局
  • 一文解决linux下mysql FEDERATED 存储引擎的配置和使用(笔者亲测有效)

    C C 气象数据中心实战工业级项目系列文章目录 第五章 解决linux下mysql FEDERATED 存储引擎的配置和使用 文章目录 C C 气象数据中心实战工业级项目系列文章目录 一 linux下mysql FEDERATED 存储引擎
  • 华为OD机试 - 文件目录大小(Python)

    题目描述 一个文件目录的数据格式为 目录id 本目录中文件大小 子目录id列表 其中目录id全局唯一 取值范围 1 200 本目录中文件大小范围 1 1000 子目录id列表个数 0 10 例如 1 20 2 3 表示目录1中文件总大小是2
  • ubuntu 下 opencv的安装以及配置(亲测有效)

    当在Ubuntu上安装OpenCV时 可以按照以下详细步骤进行操作 1 更新apt包列表 sudo apt update 这将更新系统的包列表 确保可以获取到最新的软件包信息 2 安装所需依赖项 sudo apt install build
  • Vue命名规范

    JS文件命名 一般采用的是小驼峰命名法 如 pieChartHelp 第一个单词小写 其他单词首字母大写 Components 文件命名 一般采用的是大驼峰命名法 如PieChart 所有单词的首字母大写 常量命名 一般全部大写 每个单词使
  • 目标检测YOLO实战应用案例100讲-无监督领域自适应目标检测方法研究与应用

    目录 无监督领域自适应目标检测方法研究 领域自适应目标检测 目标检测相关技术介绍
  • 数学建模之主成分分析(matlab算法)

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