数学建模:主成分分析法

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛

主成分分析法

算法流程

  1. 构建原始数据矩阵 X X X ,其中矩阵的形状为 x ∗ n x * n xn ,有 m m m 个对象, n n n 个评价指标。
  2. 然后进行矩阵的归一化处理
  3. 首先计算矩阵的指标之间的相关系数矩阵 R R R。使用matlab 的 corr 即可得到。
  4. 计算相关系数矩阵 R R R 的****特征值 D D D 和特征向量 V V V** ,并且特征值从大到小排序,由特征向量组成 n n n 个新的指标向量。
    1. y 1 , y 2 , y 3 y_1 , y_2 , y_3 y1,y2,y3 为新的主成分。

在这里插入图片描述

  1. 选择 p p p 个主成分,计算综合评价值:

    1. 计算特征值 λ i , i ∈ ( 1 , 2 , . . . n ) \lambda _i,i\in(1,2,...n) λii(1,2,...n)信息贡献率累计贡献率:

      α i = ∑ k = 1 n λ k ∑ k = 1 m λ k \alpha_i=\frac{\sum_{k=1}^n\lambda_k}{\sum_{k=1}^m\lambda_k} αi=k=1mλkk=1nλk

      b j = λ j ∑ k = 1 m λ k ( j = 1 , 2 , ⋯ , m ) b_j=\frac{\lambda_j}{\sum_{k=1}^m\lambda_k}(j=1,2,\cdots,m) bj=k=1mλkλj(j=1,2,,m)

    2. 找到累计贡献达到85%的位置,选择前 p p p 个指标变量 y 1 y 2 . . . y p y_1 y_2 ... y_p y1y2...yp作为新的主成分,代替原来的 n n n 个指标,从而对 p p p 个主成分进行综合分析。

      Z = ∑ j = 1 p b j y j Z=\sum_{j=1}^{p}b_{j}y_{j} Z=j=1pbjyj


    代码实现

    %% A_data 是一个 m*n列的矩阵,包含 n个指标%% 
    corr_A = corrcoef(A_data);
    [a,b,c] = pcacov(corr_A);%% 最后根据c的前 85% 来得到降维后的指标个数
    

    自实现:

    function [Score,Vec,p]=mfunc_PCA(data)% 进行主成分分析% paramts:%   data: 传递一个原始数据矩阵,需要首先进行数据的标准化mapminmax。Shape: (m*n),m为对象个数,n为指标个数% returns:%   Score: 综合评价得分%   Vec: (n,3)的矩阵,第一列:特征值;第二列:贡献率,第三列:累计贡献率%   p:指标降维后的个数% 计算指标的相关系数矩阵R=corr(data);%计算特征向量和特征值[V,D] = eig(R);  %V特征向量,D特征值对角线矩阵lam=diag(D);%取出对角线元素%对特征值从大到小排列[lam_sort,index]=sort(lam,'descend');V_sort=V(:,index);Vec = zeros(length(lam_sort),3);Vec(:,1) = lam_sort;contribution=lam_sort./sum(lam_sort); %贡献率Vec(:,2) = contribution;cContribution=cumsum(contribution); %累计贡献率Vec(:,3) = cContribution;p=find(cContribution>=0.85); p=p(1); %找到累计贡献达到85%的位置第一个位置%M=data*V_sort;M=M(:,1:p);  %这就是得到的新的累计贡献率超过85%主成分%以下为用新的主成分评分M(:,find(sum(M)<0))=-M(:,find(sum(M)<0));%M(find(sum()))=-M(:,2);a=contribution(1:p);F=M.*a';s=sum(F');Score=100*s/max(s);
    end
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 组合式api中 ref 和$parent 的使用

ref 的使用 vue3中&#xff0c; 在 组件中添加一个 component ref“xxx” &#xff0c;就可以在父组件中得到 子组件的 dom 对象&#xff0c; 以及 虚拟的 dom 对象&#xff0c; 有了虚拟 dom, 我们就可以在父组件中控制子组件的显示了 ref 的使用方法 vue3中ref 的特点 以上…

删除、移动、复制文件时总是要卡在99%一段时间解决方法

Win10文件夹重命名、移动、删除等操作卡顿3-5秒。 原因分析: 查看发现&#xff0c;卡顿期间资源管理器无响应&#xff0c;并且其高度占用CPU资源&#xff0c;但是对于非文件夹文件操作没有问题。 解决方案: 1、双击“此电脑”&#xff0c;选择“查看”&#xff0c;再选择“选…

三、mycat分库分表

第五章 分库分表 一个数据库由很多表的构成&#xff0c;每个表对应着不同的业务&#xff0c;垂直切分是指按照业 务将表进行分类&#xff0c;分布到不同 的数据库上面&#xff0c;这样也就将数据或者说压力分担到不同 的库上面&#xff0c;如下图&#xff1a; 系统被切分成了&…

常静相伴:深度解析C++中的const与static关键字

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…

java八股文面试[多线程]——并发三大特性 原子 可见 顺序

AutomicInteger : volatile CAS 总线LOCK MESI 两个协议 TODO volatile的可见性和禁止重排序是怎么实现的&#xff1a; DCL场景&#xff1a; new操作会在字节码层面生成两个步骤&#xff1a; 分配内存、调用构造器 然后把引用赋值给singleton 不加volatile则会发生指令重…

Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

ssm+vue乐购游戏商城系统源码和论文

ssmvue乐购游戏商城系统源码和论文115 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着社会的发展&#xff0c;游戏品种越来越多&#xff0c;计算机的优势和普及使得乐购游戏商城系统的开发成为必需…

Databricks 入门之sql(二)常用函数

1.类型转换函数 使用CAST函数转换数据类型&#xff08;可以起别名&#xff09; SELECTrating,CAST(timeRecorded as timestamp) FROMmovieRatings; 支持的数据类型有&#xff1a; BIGINT、BINARY、BOOLEAN、DATE 、DECIMAL(p,s)、 DOUBLE、 FLOAT、 INT、 INTERVAL interva…

android studio git没有显示Local Changes界面

设置android studio git没有显示Local Changes界面 Setting -> Version Control-> commit -> 把use non-modal commit interface 的勾勾去掉&#xff0c;如下图所示 然后点击apply&#xff0c;回到git界面就看到了&#xff0c;亲测有效

2023年7月京东护发市场数据分析(京东数据产品)

如今&#xff0c;与面部护肤相比&#xff0c;多数消费者认为头皮也需要认真对待&#xff0c;这在年轻消费群体中体现的较为明显。 随着消费者对护发理念的认同感不断加深&#xff0c;人们日常居家洗护的步骤也更加精细、使用产品品类也愈加多样化。除传统的护发素、发膜等护发…

Web3 社交平台如何脱颖而出?我们和 PoPP 聊了聊

能够颠覆 Web2 传统模式的社交产品有着怎样的特征&#xff1f;PoPP 作为专注于 Web3 的私域流量变现平台&#xff0c;为开发者和用户提供了社交产品发展的新路径&#xff0c;让社区用户充分实现互动交流&#xff0c;着力于创作内容的激励与变现。事实上&#xff0c;面对 Web3 社…

电脑可以上网,微信都可以用,但浏览器打不开网页

可以试试设置DNS&#xff08;其他windows版本步骤&#xff09;&#xff1a; 1.打开控制面板 2.网络和Internet 3.查看网络计算机和设备 4.按照下图步骤&#xff1a; 5.按下图进行

WorkPlus Meet支持企业局域网内部使用的视频会议系统

在当今飞速发展的数字时代&#xff0c;企业内部协作和沟通变得愈发多元化和重要。与此同时&#xff0c;随着数据泄露和信息安全风险的威胁不断升级&#xff0c;企业音视频沟通在各个业务场景中的广泛应用。为了提高工作效率&#xff0c;实现信息共享与协同办公&#xff0c;保证…

CSP的理解与绕过

文章目录 前言CSP简介CSP如何工作CSP指令CSP指令值 例题[AFCTF 2021]BABY_CSP 前言 刚学习完xss&#xff0c;把xsss-labs靶场都通了打算试试水&#xff0c;遇到此题[AFCTF 2021]BABY_CSP&#xff0c;借此机会学习下CSP CSP简介 Content Security Policy (CSP)内容安全策略&am…

Spring与Mybatis整合aop整合pageHelper分页插件

前言 Spring与MyBatis整合的意义在于提供了一种结合优势的方式&#xff0c;以便更好地开发和管理持久层&#xff08;数据库访问&#xff09;代码。 这里也是总结了几点主要意义 简化配置&#xff1a;Spring与MyBatis整合后&#xff0c;可以通过Spring的配置文件来管理和配置M…

行业追踪,2023-08-31

自动复盘 2023-08-31 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Elasticsearch:自动使用服务器时间设置日期字段并更新时区

在大多数情况下&#xff0c;你的数据包含一个以 create_date 命名的字段。 即使没有日期字段&#xff0c;处理各种格式和时区的日期对数据仓库来说也是一个重大挑战。 与此类似&#xff0c;如果要检测变化的数据&#xff0c;则必须准确设置日期字段。 在 Elasticsearch 中还有…

Doris集群安装部署(1.2.4.1 release)

此文阅读需要有Linux和服务器硬件基础&#xff01;某些内容写的不是特别细&#xff0c;如果常见的linux基础命令tar、uzip、mv、mkdir、系统包的安装等等&#xff0c;以文字带过了&#xff0c;这样可以减少文章篇幅。官方的安装部署方式一定要好好看一下&#xff0c;最好是尝试…

BL122:钡铼技术驱动,实现无缝Modbus到Profinet转换

钡铼技术BL122协议转换网关是一款专业的设备&#xff0c;用于将Modbus协议转换为Profinet协议。BL122采用了先进的嵌入式ARM MCU和基于Linux OS系统的开发&#xff0c;具备出色的性能和高度的稳定性。 BL122支持多种下行采集方式&#xff0c;包括Modbus RTU、Modbus TCP和Modbu…

图像处理 信号处理板 设计原理图:367-基于zynq XC7Z100 FMC接口通用计算平台

基于zynq XC7Z100 FMC接口通用计算平台 一、板卡概述 板卡由SoC XC7Z100-2FFG900I芯片来完成卡主控及数字信号处理&#xff0c;XC7Z100内部集成了两个ARM Cortex-A9核和一个kintex 7的FPGA&#xff0c;通过PL端FPGA扩展FMC、光纤、IO等接口&#xff0c;PS端ARM扩展网络、USB、R…