数学建模(灰色关联度 python代码 案例)

news2024/9/22 5:34:06

目录

介绍:

模板:

案例:哪些原因影响结婚率

 数据标准化:

灰色关联度系数:

完整代码:

结果: 

介绍:

灰色关联度是一种多指标综合评价方法,用于分析和评价不同指标之间的关联程度。它可以用于确定多个因素之间的相关性,以及它们对某个问题或现象的影响程度。

灰色关联度根据数据的相对大小和发展趋势,将指标划分为灰色数列,然后通过计算各指标之间的相对关联度来确定其关联程度。

灰色关联度的计算过程包括以下几个步骤:
1. 数据标准化:将各指标的原始数据进行标准化处理,将其转化为无量纲的数据。
2. 累积生成:将各指标数据按照一定顺序进行累积生成,得到灰色数列。
3. 关联系数计算:计算各指标与问题或现象之间的关联度,得到关联系数。
4. 排序和评价:根据关联系数对指标进行排序,评价其对问题或现象的影响程度。

通过灰色关联度分析,可以帮助人们理解指标之间的关系,并进一步确定影响问题或现象的主要因素。这种方法常用于战略决策、经济发展、工程管理等领域,具有较高的应用价值。

模板:

import numpy as np

def gray_relation_coefficient(x, y):
    '''
    计算两个序列的灰色关联度
    参数:
        x: 序列x(一维数组)
        y: 序列y(一维数组)
    返回值:
        关联度值(float)
    '''
    n = len(x)
    # 数据标准化
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    x_std = np.std(x)
    y_std = np.std(y)
    x_normalized = (x - x_mean) / x_std
    y_normalized = (y - y_mean) / y_std
    
    # 构造灰色数列
    x_cumulative = np.cumsum(x_normalized)
    y_cumulative = np.cumsum(y_normalized)
    
    # 计算关联系数
    d = np.abs(x_cumulative - y_cumulative)
    delta = np.max(d)
    rho = 0.5
    relation_coefficient = (rho * delta + 1) / (d + rho * delta + 1)
    
    return relation_coefficient

# 测试示例
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 5, 7, 9, 11])

relation_coefficient = gray_relation_coefficient(x, y)
print("关联度值:", relation_coefficient)
 

案例:哪些原因影响结婚率

 数据标准化:

def normalization(data1):
    [m, n] = data1.shape  # 得到行数和列数
    data2 = data1.astype('float')
    data3 = data2
    ymin = 0.001
    ymax = 1
    for j in range(0, n):
        d_max = max(data2[:, j])
        d_min = min(data2[:, j])
        data3[:, j] = (ymax - ymin) * (data2[:, j] - d_min) / (d_max - d_min) + ymin
    #print(data3)
    return data3

灰色关联度系数:

 

 

def Score(data):
    # 得到其他列和参考列相等的绝对值
    data3=data
    [n, m] = data3.shape
    #print(n)
    for i in range(1, m):
        data3[:, i] = np.abs(data3[:, i] - data3[:, 0])

    # 得到绝对值矩阵的全局最大值和最小值
    data4 = data3[:, 1:m]
    d_max = np.max(data4)
    d_min = np.min(data4)
    a = 0.5  # 定义分辨系数

    # 计算灰色关联矩阵
    data4 = (d_min + a * d_max) / (data4 + a * d_max)
    score = np.mean(data4, axis=0)
    return score

 完整代码:

# coding=gbk
import pandas as pd
import numpy as np
def normalization(data1):
    [m, n] = data1.shape  # 得到行数和列数
    data2 = data1.astype('float')
    data3 = data2
    ymin = 0
    ymax = 1
    for j in range(0, n):
        d_max = max(data2[:, j])
        d_min = min(data2[:, j])
        data3[:, j] = (ymax - ymin) * (data2[:, j] - d_min) / (d_max - d_min) + ymin
    #print(data3)
    return data3

def Score(data):
    # 得到其他列和参考列相等的绝对值
    data3=data
    [n, m] = data3.shape
    #print(n)
    for i in range(1, m):
        data3[:, i] = np.abs(data3[:, i] - data3[:, 0])

    # 得到绝对值矩阵的全局最大值和最小值
    data4 = data3[:, 1:m]
    d_max = np.max(data4)
    d_min = np.min(data4)
    a = 0.5  # 定义分辨系数

    # 计算灰色关联矩阵
    data4 = (d_min + a * d_max) / (data4 + a * d_max)
    print("灰色关联矩阵:")
    print(data4)
    score = np.mean(data4, axis=0)
    return score

if __name__ == '__main__':
    # 导入数据
    data = pd.read_excel('D:\\桌面\\建模\\6\\代码\\marry.xlsx')
    # print(data)
    # 提取变量名
    label_need = data.keys()[1:]
    # print(label_need)
    # 提取上面变量名下的数据
    data1 = data[label_need].values
    #print(data1)

    data3=normalization(data1)#标准化

    scores=Score(data3)#算灰色关联度

    [m, n] = data1.shape  # 得到行数和列数

    #print(data)
    print()
    for i in range(1, n):
        print(label_need[0], "与", label_need[i], "的灰色关联度", scores[i - 1])

结果: 

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

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

相关文章

【MySQL】对表的相关操作(DDL)

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

软件杯 深度学习 大数据 股票预测系统 - python lstm

文章目录 0 前言1 课题意义1.1 股票预测主流方法 2 什么是LSTM2.1 循环神经网络2.1 LSTM诞生 2 如何用LSTM做股票预测2.1 算法构建流程2.2 部分代码 3 实现效果3.1 数据3.2 预测结果项目运行展示开发环境数据获取 最后 0 前言 🔥 优质竞赛项目系列,今天…

AI助力生产制造质检,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建工业生产制造场景下的瓷砖瑕疵检测识别分析系统

瓷砖生产环节一般经过原材料混合研磨、脱水、压胚、喷墨印花、淋釉、烧制、抛光,最后进行质量检测和包装。得益于产业自动化的发展,目前生产环节已基本实现无人化。而质量检测环节仍大量依赖人工完成。一般来说,一条产线需要配数名质检工&…

塔楼VR火灾逃生应急安全教育突破了传统模式

城镇化的高速发展,给消防安全带来了严峻的挑战,尤其是人员密集的办公场所,如何预防火灾发生,学习火灾成因,减少火灾发生避免不必要的损失,成为安全应急科普的重中之重。 通过模拟真实的办公场所火灾场景&am…

JVM监控工具

JVM监控工具 jps 查看系统中运行的java进程id PS D:\practise\test> jps 22672 Jps 13688 RemoteMavenServer36 1068 14188 TestApplication PS D:\practise\test> jmap 用来查看进行内存信息,实例个数以及占用内存大小 jmap -histo 进程id PS D:\prac…

Python使用PaddleSpeech实现语音识别(ASR)、语音合成(TTS)

目录 安装 语音识别 补全标点 语音合成 参考 PaddleSpeech是百度飞桨开发的语音工具 安装 注意,PaddleSpeech不支持过高版本的Python,因为在高版本的Python中,飞桨不再提供paddle.fluid API。这里面我用的是Python3.7 需要通过3个pip…

华为北向网管NCE开发教程(5)打包org.omg.CosNotification找不到

1问题描述 在IDE中,代码能正常运行,但是打包的时候,会抱不到一些类 2问题原因 导入的本地包中,能在IDE中找到,但是在使用maven打包时,maven找不到这些依赖包 3解决办法 将依赖包通过maven安装到maven…

基于python+vue灾害应急救援平台flask-django-php-nodejs

灾害应急救援平台的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来,…

python银行柜台管理系统flask-django-php-nodejs

相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低银行的运营人员成本,实现了银行柜台的标准化、制度化、程序化的管理,有效地防止了银行柜台的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询…

Linux:Prometheus+Grafana+睿象云告警平台(3)

在上一章我进行了Prometheus和Grafana的基础搭建以及部署 Linux:Prometheus的源码包安装及操作(2)-CSDN博客https://blog.csdn.net/w14768855/article/details/136855988?spm1001.2014.3001.5501 1.注册 在监控中必不可少的就是监控告警&am…

螺旋卫星通信天线设计与有限元分析matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 卫星搭载用于通讯的螺旋型天线,卫星尺寸: 10cm*10cm*30cm;天线类型:螺旋;天线UHF(约1GHz – 3GHz&#…

【精彩回顾】百度智能云千帆产品3月21日发布会

3月21日,AI Cloud Day:百度智能云千帆产品发布会在北京举办。会议聚焦百度智能云千帆大模型平台最新进展,分享思考与实践。百度智能云在发布会期间宣布: >>满足企业“效价比”核心诉求,千帆ModelBuilder大模型服…

clickhouse sql使用

1、arrayMap(fun1,arr1)使用 第一个参数是一个 lambda 函数,第二个参数是一个集合 eg、select arrayMap(x->x1,[1,2,3]) 对集合中每个数1 2、arrayJoin(arr1) 将集合由行转列 eg、 select arrayJoin([1,2,3]) eg、select arrayJoin(arrayMap(x->x1,[1,2,3])) …

学工系统0day挖掘-危害拉满

前言: 21年的挖的漏洞了 漏洞均已提交且均已修复,这里文章只做技术交流 正文: 漏洞挖掘过程: 起因是这样的 20年简单挖了一下这个学校,但是没把shell拿了 后面随着学习21年又回来看了看这个系统,果然发觉了很多新的东西,脱敏了就写文章下。 漏洞1:未授权批量挖掘:…

【C++】---string的模拟

【C】---string的模拟 一、string类实现1.string类的构造函数2.swap()函数3.拷贝构造函数4.赋值运算符重载5.析构6.迭代器7.operator[ ]8.size9.c_str()10.reserve()11.resize()12.p…

BetterDisplay Pro:让屏幕管理更高效、更便捷

BetterDisplay Pro是一款功能强大的显示器管理软件,适用于Windows和Mac操作系统。其主要功能包括显示器校准、自动校准、多种预设模式、手动校准以及可视化数据等。 具体而言,这款软件可以根据用户的需求和环境条件调整显示器的颜色、亮度和对比度等参数…

Java项目:68 ssm0校园美食交流系统+vue

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 主要功能包括管理员:首页、个人中心、美食分类管理、美食信息管理、用户管理、管理员管理、论坛中心、系统管理。 前台首页:首…

【SpringBoot】登录校验之会话技术、统一拦截技术

真正的登录功能应该是: 登陆后才能访问后端系统页面,不登陆则跳转登陆页面进行登陆。 当我们没有设置登录校验,可以直接通过修改地址栏直接进入管理系统内部,跳过登录页。而后端系统的增删改查功能,没有添加判断用户是…

Redis进阶(持久化、复制、集群、多线程、缓存)

Redis进阶 1.Redis持久化1.1 什么是Redis持久化?为什么需要持久化?1.2 Redis持久化方式——RDB(Redis DataBase)1.2.1 什么是RDB?1.2.2 备份文件位置1.2.3 触发RDB的方式1.2.3.1 自动触发1.2.3.2 手动触发1.2.3.3 其他触发方式 1.2.4 RDB优缺…

(Ubuntu中调用相机花屏)Astra plus深度相机--rgb彩色图像花屏解决方法之一

在调试深度相机的过程中只能能调出深度图像和红外图像 在rviz的image的topic中选择彩色图像的话题不显示图像 1、查看相机的usb序列号 lsusb如上图所示,此相机的USB序列号是2bc5:050f,2bc5:060f 其中050f是显示彩色图像的 在这里可通过拔插相机来确定序列号是哪几…