数学建模(基于Python实现)--灰色关联分析法讲解,含案例

前言

  • 这是去年底学数学建模老哥的建模课程笔记;

  • 未来本人将陆陆续续的更新数学建模相关的一些基础算法,大家可以持续关注一下,主要在于运用;

  • 提示:数学建模只有实战才能提升🔥​🔥​🔥​🔥​🔥​,光学算法没有啥意义,也很难学的很懂。

概念

灰色关联分析的基本思想:是根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之就越小。

一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种,多种因素共同作用的结果决定了该系统的发展态势,其中,哪些是主要因素,哪些是次要因素;哪些因素对系统发展影响大,哪些因素对系统发展影响小;哪些因素对系统发展起推动作用需强化发展,哪些因素对系统发展起阻碍作用需加以抑制,灰色关联分析中,对每个影响不同的因数进行不同权重的赋值,这也是主观性过强的原因。

灰色关联分析法则用于确定各因素对结果影响程度或随时间变化的综合评价类问题。

  • 优点
    • 灰色关联分析法弥补了采用数理统计方法作系统分析所导致的遗憾。它对样本量的多少和样本有无规律都同样适用,而且计算量小,十分方便,更不会出现量化结果与定性分析结果不符的情况。
  • 缺点
    • 要求需要对各项指标的最优值进行现行确定,主观性过强,同时部分指标最优值难以确定。

步骤

例题:
在这里插入图片描述

第一步、确定比较对象(评价对象)和参考数列(评价标准)

这一步就是选取评价对象,和评价对象有关系影响因素,本题中就是,通过这个地区水库含氧量、PH值、细菌总数、植物性营养物含量数据,评价那些因数对本地水质的关联大,那些小

代码:

import numpy as np# 原始数据
data = np.array([[8, 7.2, 500, 12],[6, 7.0, 600, 15],[9, 7.5, 400, 18],[7, 7.3, 450, 11],[10, 7.1, 550, 9]
])# 无量纲化处理
min_values = data.min(axis=0)
max_values = data.max(axis=0)
normalized_data = (data - min_values) / (max_values - min_values)
normalized_data
array([[0.5       , 0.4       , 0.5       , 0.33333333],[0.        , 0.        , 1.        , 0.66666667],[0.75      , 1.        , 0.        , 1.        ],[0.25      , 0.6       , 0.25      , 0.22222222],[1.        , 0.2       , 0.75      , 0.        ]])

第二步、确定各指标的权重

确定各指标对应的权重,如:专家打分法、层次分析法…………

#设置权重
w= np.array([0.1,0.2, 0.3,0.4])

第三步、计算灰色关联系数

rho = 0.5  # 分辨系数# 计算差值
differences = normalized_data[:-1, :] - normalized_data[-1, :]# 计算最小差值和最大差值
min_diff = np.min(differences, axis=0)
max_diff = np.max(differences, axis=0)# 计算灰色关联系数
relational_coefficients = (min_diff + rho * max_diff
) / (differences + rho * max_diff)relational_coefficients
array([[0.5       , 0.4       , 0.5       , 0.33333333],[0.        , 0.        , 1.        , 0.66666667],[0.75      , 1.        , 0.        , 1.        ],[0.25      , 0.6       , 0.25      , 0.22222222],[1.        , 0.2       , 0.75      , 0.        ]])
array([[ 1.8       ,  0.33333333,  5.        ,  0.86666667],[ 1.        ,  1.        , -1.66666667,  0.61904762],[ 3.        ,  0.16666667,  1.        ,  0.48148148],[ 1.28571429,  0.25      ,  1.66666667,  1.        ]])

第四步、计算灰色加权关联度

在这里插入图片描述

p,分辨率大小,一般取0.4,0.5,0.6,越大,更关注指标差异性,越小,更注重指标相关性

在这里插入图片描述

# 沿着axis=1(即列)求和,得到每行的和  
row_sums = np.sum(relational_coefficients, axis=1)  # 确保w的形状与row_sums的形状相匹配  
assert w.shape == (relational_coefficients.shape[0],), "w的长度必须与relational_coefficients的行数相同"  # 计算每行的和乘以w中对应元素的值  
relational_degrees = row_sums * w  print("每行的和:", row_sums)  
print("权重w:", w)  
print("每行的和乘以对应权重w的值(即relational_degrees):", relational_degrees)
每行的和: [8.         0.95238095 4.64814815 4.20238095]
权重w: [0.1 0.2 0.3 0.4]
每行的和乘以对应权重w的值(即relational_degrees): [0.8        0.19047619 1.39444444 1.68095238]

第五步、评价分析

根据加权关联度大小,对各评价对象进行排序,可建立评价对象的关联序,关联度越大,评价结果越好

# 对关联度进行降序排序并获取排序索引
sorted_indices = np.argsort(-relational_degrees)# 打印排序结果
print("关联度排序索引: ", sorted_indices)
关联度排序索引:  [3 2 0 1]

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter结合ansible分布式压测--1数据准备

一、搭建ansible环境 ansible是基于python开发,通过ssh连接客户机执行任务。ansible可以批量系统配置、批量程序部署、批量运行命令等。 1、安装yum install ansible 2、检查ansible的版本:ansible --version 二、利用ansible在其他机器上准备压测数据 1、本地准…

网络:ARP的具体过程和ARP欺骗

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言ARP具体过程ARP欺骗原理总结 前言 本文仅作为ARP具体过程和ARP欺骗的知识总结 硬件类型 :指定发送和接受ARP包的硬件类型&am…

AI大模型的广泛应用时代该如何重塑软件开发流程?

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于AI大模型如何重塑软件开发流程的相关内容…

影响神经网络速度的因素- FLOPs、MAC、并行度以及计算平台

影响神经网络速度的四个主要因素分别是 FLOPs(浮点操作数)、MAC(内存访问成本)、并行度以及计算平台。这些因素共同作用,直接影响到神经网络的计算速度和资源需求。 1. FLOPs(Floating Point Operations&a…

springboot基于SpringBoot的旅游网站的设计与实现

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,旅游网站当然也不能排除在外,随着旅游网站的不断成熟,它彻底改变了过去传统的旅游网站方式,不仅使旅游管理…

2.2 python数据库-mysql

以mysql为例,数据库的操作包括:连接、断开、新增库表、新增数据、查询数据、删除数据和修改数据 1. 连接与关闭 #!/usr/bin/python3import pymysqldb pymysql.connect(hostlocalhost,usertestuser,passwordtest123,databaseTESTDB)# 使用 cursor() 方…

微信小程序的汽车维修预约管理系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 系统功能简述 前台用于实现用户在页面上的各种操作,同时在个人中心显示各种操作所产生的记录:后…

Python | Leetcode Python题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; class Solution:def singleNonDuplicate(self, nums: List[int]) -> int:low, high 0, len(nums) - 1while low < high:mid (low high) // 2mid - mid & 1if nums[mid] nums[mid 1]:low mid 2else:high midreturn nums[l…

7.2 设计模式

设计模式 7.3.1 设计模式的要素7.3.2 创建型设计模式7.3.3 结构性设计模式1. Adapter (适配器)2. Bridge(桥接)3.Composite(组合)4.Decorator(装饰)5.Facade(外观)6.Flyweight(享元)7.Proxy(代理)8. 结构型模式比较 7.3.4 行为型设计模式1 Chain of Responsibility [ &#xff…

使用ffmpeg播放rtsp视频流

获取IPC摄像机视频流一般使用GB28181或者RTSP协议&#xff0c;这两款协议是比较常见的&#xff1b;两者都有开源的库&#xff0c;下面介绍如何使用RTSP获取进行IPC视频流&#xff1b; 准备库 ffmepg是个开源的库,该库集成了rtsp协议&#xff0c;可以直接使用&#xff1b;首先…

python之数据结构与算法(数据结构篇)-- 队列

一、队列的概念 1.“队列”这个概念&#xff0c;其实可能我们在进行排队的时候是差不多的。 2.例如&#xff0c;在结账时&#xff0c;顾客按照到达顺序排队等待付款&#xff0c;这是现实生活中的一个队列示例。同样地&#xff0c;在计算机程序中&#xff0c;当多个任务需要按顺…

网卡多队列介绍

一、多队列网卡 1.1 什么是多队列网卡 多队列网卡&#xff08;Multi-Queue NIC&#xff09;支持将网络流量分发到多个处理队列中&#xff0c;以提高系统的网络处理性能和吞吐量。传统上&#xff0c;单队列网卡只有一个硬件队列用于处理所有的输入和输出流量&#xff0c;这可能…

文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点?

文本语义分块、RAG 系统的分块难题&#xff1a;小型语言模型如何找到最佳断点&#xff1f; 转自jina最新的关于文本语义分块的分享和模型 之前我们聊过 RAG 里文档分块 (Chunking) 的挑战&#xff0c;也介绍了 迟分 (Late Chunking) 的概念&#xff0c;它可以在向量化的时候减…

linux 安装php扩展:xlswriter

这里以xlswriter扩展为例 进入官方扩展&#xff1a;https://pecl.php.net查询自己php对应版本的扩展包 下载扩展 wget https://pecl.php.net/get/xlswriter-1.5.5.tgz 解压扩展 tar -zxvf xlswriter-1.5.5.tgz 进入扩展目录 cd xlswriter-1.5.5 查找对应php版本的phpiz…

IPC原理

消息队列 什么是消息队列 消息队列接口 msgget msgctl ipcs -p msgsnd msgrcv code示例 发送到消息队列&#xff1a; #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include…

成为编程高手 day16

今天在学结构体 网上说可以用点号找到对应的地方&#xff0c;但是发现不可以&#xff0c;后来上网查资料 vs里面需要把cpp改成c才可以 我爱说实话&#xff0c;这玩意咋这么长。

U8C表体存货或编码相关的字段赋值不上

涉及到表体有存货相关字段的单据&#xff0c;如果更改源码或者客开的时候使用VO赋值&#xff0c;跟代码VO的存货字段有值&#xff0c;但是在前台不显示有值&#xff0c;或者说在前台显示没有值。 需要你在使用this.getBillCardPanel().setBillValueVO(oldVO);或者ui.getBillCa…

实战攻略 | ClickHouse优化之FINAL查询加速

【本文作者&#xff1a;擎创科技资深研发 禹鼎侯】 查询时为什么要加FINAL 我们在使用ClickHouse存储数据时&#xff0c;通常会有一些去重的需求&#xff0c;这时候我们可以使用ReplacingMergeTree引擎。这个引擎允许你存储重复数据&#xff0c;但是在merge的时候会根据order …

albert模型实现微信公众号虚假新闻分类

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

nginx系列--(一)--调试环境搭建

辅助脚本&#xff1a; #!/bin/bash mkdir -p $(pwd)/nginxhome # 生成 Makefile,--prefix need a absolute path --with-stream表示要包括stream模块 auto/configure --prefix$(pwd)/nginxhome --with-stream # lsof -i tcp:10086 && fuser -k 10086/tcp ||true # 定…