数学建模——评价决策类算法Python版(灰色关联分析、主成分分析)

news2024/12/25 12:22:29

一、灰色关联分析

模型原理

解题步骤 

例题

某公司考虑在几个候选城市中开设新的零售店。公司收集了以下数据,包括候选城市的GDP、人口、交通便利程度、商业发展水平等指标。公司希望使用灰色关联分析法来评估这些指标与零售店成功可能性之间的关系,以确定最佳的开店城市。

以下是候选城市的数据:

步骤1:建立参考序列

选择各指标的最优值作为参考序列X0。

X0 = [3200, 120, 90, 95]

步骤2:数据预处理

由于各指标的量纲不同,需要将原始数据进行无量纲化处理。

步骤3:计算灰色关联系数

计算每个城市指标与参考序列的关联系数。

步骤4:计算灰色关联度

计算每个城市的灰色关联度,即各指标关联系数的加权平均值。

步骤5:根据灰色关联度进行排序

根据灰色关联度对候选城市进行排序,关联度最高的城市即为最佳开店城市。

下面是Python代码实现:

import numpy as np

# 原始数据
data = np.array([[3000, 100, 85, 90],
                 [2800, 120, 80, 85],
                 [3200, 90, 90, 95],
                 [2600, 110, 75, 80]])

# 参考序列
X0 = np.array([3200, 120, 90, 95])

# 数据预处理,无量纲化处理
data_normalized = data / X0

# 计算灰色关联系数
def grey_relation_coefficient(x, y):
    return np.min([abs(y - x[i]) / (np.max(abs(y - x)) + 1e-5) for i in range(len(x))])

# 计算所有城市的关联系数
grey_relation_matrix = np.array([[grey_relation_coefficient(X0, data_normalized[i, j]) for j in range(data.shape[1])] for i in range(data.shape[0])])

# 假设各指标权重相等
weights = np.array([1/4, 1/4, 1/4, 1/4])

# 计算灰色关联度,即各指标关联系数的加权平均值
grey_relation_degree = np.sum(grey_relation_matrix * weights, axis=1)

# 输出结果
print("各城市的灰色关联度:")
for i, degree in enumerate(grey_relation_degree):
    print(f"城市 {chr(65+i)}: {degree:.4f}")

# 排序
sorted_indices = np.argsort(grey_relation_degree)[::-1]
print(f"最佳开店城市是:城市 {chr(65+sorted_indices[0])}")

        这段代码首先进行了数据的无量纲化处理,然后计算了每个城市与参考序列的灰色关联系数,接着计算了灰色关联度,并最后根据关联度对城市进行了排序,找出了最佳的开店城市。在实际应用中,各指标的权重可能需要根据具体情况来确定。

结果

二、主成分分析

 

 

 

import pandas as pd
import numpy as np
# 在Python中导入scipy库中的linalg模块
# scipy 是Python中的一个科学计算库。
# linalg 是线性代数(linear algebra)的缩写,它是数学的一个分支,涉及线性方程、线性函数以及它们通过矩阵和向量空间的表示。
from scipy import linalg

# 读取Excel文件的B:G列,除去第一行(标题)
df = pd.read_excel('棉花产量论文作业的数据.xlsx', usecols='C:G')
print(df)
# df.to_numpy 是 pandas 中 DataFrame 对象的一个方法,用于将 DataFrame 的数据转换为 NumPy 数组。
x = df.to_numpy()
print(x)
# 接下来的步骤与之前相同
# 标准化数据
X = (x - np.mean(x, axis=0)) / np.std(x, ddof=1, axis=0)

# 计算协方差矩阵
R = np.cov(X.T)

# 计算特征值和特征向量
eigenvalues, eigenvectors = linalg.eigh(R)
# 将特征值数组按降序排列
eigenvalues = eigenvalues[::-1]
# 将特征向量矩阵的列按降序排列
eigenvectors = eigenvectors[:, ::-1]

# 计算主成分贡献率和累积贡献率
contribution_rate = eigenvalues / sum(eigenvalues)
# np.cumsum 是 NumPy 库中的一个函数,用于计算数组元素的累积和。
cum_contribution_rate = np.cumsum(contribution_rate)

# 打印结果
print('特征值为:')
print(eigenvalues)
print('贡献率为:')
print(contribution_rate)
print('累计贡献率为:')
print(cum_contribution_rate)
print('与特征值对应的特征向量矩阵为:')
print(eigenvectors)

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

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

相关文章

sql注入绕过+rce

目录 1、mysql编码绕过 1.1、环境搭建 1.1.1、源码 1.1.2、数据库 1.1.3、检测环境 1.2、绕过技巧 1.2.1、直接使用admin,查询数据,发现权限被拒绝 1.2.2、加上单引号绕过了,但是查询不到数据 1.2.3、试试其他特殊字符,发…

python循环——九九乘法表(更加轻松的理解循环结构)

感受 首先,得明确意识到这个问题,就是我的循环结构学的一塌糊涂,完全不能很好的使用这个循环来实现各种九九乘法表达输出,这样的循环结构太差了,还需要我自己找时间来补充一下循环的使用,来拓宽自己的思考方…

【开端】Java 分页工具类运用

一、绪论 Java系统中,分页查询的场景随处可见,本节介com.baomidou.mybatisplus.core.metadata.IPage;来分页的工具类 二、分页工具类 public class PageUtils implements Serializable { private static final long serialVersionUID 1L; /**…

服务器安装哪吒面板详细教程

本文长期更新地址: 服务器安装哪吒面板详细教程-星零岁的博客https://blog.0xwl.com/13568.html 注:本文中部分内容源自网络,第四步中部分来自本人曾经文章:云服务器安装配置宝塔面板并安装基础运行环境教程-星零岁的博客 今天来讲…

Dubbo 快速掌握 这篇就够了

1. Dubbo概述 Dubbo 是一款高性能、轻量级的开源Java RPC框架,由阿里巴巴公司开发并在2011年开源。它主要用于解决分布式系统中服务之间的通信问题,支持多种协议,如Dubbo、HTTP、Hessian等,具有服务注册、服务发现、负载均衡、故…

基于大语言模型抽取文本中的实体和关系

在基于大语言模型图数据库存储中,要从文本中提取实体,实体属性和关系。 实体关系抽取是从文本中的句子里抽取出一对实体并给出实体间关系的任务。 该任务的输入是一句话,输出是一个spo三元组(subject-predicate-object&#xff…

【数据结构】TreeMap和TreeSet

目录 前言TreeMap实现的接口内部类常用方法 TreeSet实现的接口常用方法 前言 Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。 一般把搜索的数据称为关键字(Key), 和关键字对应的称为…

【C#】知识汇总

目录 1 概述1.1 GC(Garbage Collection)1.1.1 为什么需要GC?1.1.2 GC的工作原理工作原理什么是Root?GC算法:Mark-Compact 标记压缩算法GC优化:Generational 分代算法 1.1.3 GC的触发时间1.1.4 如何减少垃圾…

MFC核心技术探索

原文地址:李浩的博客 lihaohello.top 本文采用逐步调试的方法,带你一起探索MFC程序的执行流程、窗体创建、消息映射、运行时类型识别、对象动态创建这些核心机制。 相信读者在深入理解这些核心机制后,会由衷感叹于MFC框架实现的精妙&#xf…

Outh2四种授权模式详解

1.oauth 2.0 简介 2.各个角色介绍 3.四种模式 4.授权码模式 ①:获取授权码 ②:申请授权接口 ③:申请token ④:申请token接口 5.简单模式 6.密码模式 7.客户端模式

StarRocks 存算分离 Data Cache 二三事

前言 StarRocks 存算分离模式架构中,数据导入后,会被写入远端对象存储。而对象存储由于其访问延迟较高特性,如果没有任何优化,每次查询直接访问后端对象存储,那么性能就会变得非常差,也就失去了 StarRocks…

【C#】一个项目移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,解决方法

文章目录 1 问题分析2 本文解决方法 一个项目可以正常运行编译的项目,所有路径均为相对路径。 移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF, 1 问题分析 这个错误信息表明在处理文件时,Files 的值出…

tiktok 搜索接口请求与翻页

这几天有小伙伴问tk的搜索接口的问题, 一个是搜索热门接口请求返回 {“status_code”: 0},这个使用curl_cffi的requests库改一下指纹请求就行了。 再一个就是翻页问题 细心一些比对一下翻页参数都能做到的(小伙伴以为只改个offset就完事了) 要不然你只能得到这样的结果:…

JavaWeb—XML_Tomcat10_HTTP

一、XML XML是EXtensible MarkupLanguage的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。 可扩展:三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写; 在XML基…

极狐GitLab 如何设置访问令牌前缀?

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…

GSON转换将Long类型转换Double导致精度丢失的问题排查

问题描述 项目中同步订单时发现一个问题,同一条的数据,order_id和item_id为Long类型,在同步时,数值变了。比如原本是6930414387088791188变成了69304143870884512001。 问题排查 经过排查发现http请求的返回参数是正常的&#…

树形结构数据数据查询优化过程

树形结构数据统计查询优化过程 初始方案&#xff1a; 组织树数据结构如下&#xff1a; 数据请求参数&#xff1a; 原技术方案&#xff1a; public List<Map<String, List<Long>>> getSelectParam(List<DepartmentQueryDTO> departmentList, Stri…

图论(二):图的度分析——度数bar图度数等级图度数直方图根据度数渲染节点颜色

本期所用数据集&#xff0c;空手道俱乐部关系数据集&#xff1a; 数据集中共有34个节点&#xff0c;每个节点代表俱乐部中的一名成员数据集中共有78条边&#xff0c;每条边表示两名成员之间的友谊关系或社交联系常见数据集格式为GML和TXT格式&#xff0c;还可能包含其他格式的…

检索增强生成算法

检索增强生成算法&#xff08;Retrieval-Augmented Generation&#xff0c;RAG)是由Patrick Lewis等人于2020年提出的&#xff08;https://arxiv.org/pdf/2005.11401&#xff09;&#xff0c;主要用于辅助大规模语言模型&#xff08;Large Language Models, LLMs&#xff09;在…

【网络】代理服务器

目录 正向代理 反向代理 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 正向代理 正向代理&#xff08;Forward Proxy&#xff09;是一种常见的网络代理方式&#xff0c;它位于客户端和目标 服务器之间&#xff0c;代表客户端向目标服务器发送请求。正向代理服务器接收客户…