数模补充(4)灵敏度分析

news2025/1/11 5:40:11

一、概念

1.1基础概念

灵敏度分析是一种分析模型输出响应程度与模型输入参数变化之间关系的方法,通过对模型输入参数进行变化和分析,来评估模型输出结果的稳定性和可靠性,以及各个输入参数对输出结果的影响程度。

1.2常用模型  

1.3基本流程 

1.4注意事项 

 

二、基于python的灵敏度分析

2.1问题

在这个示例代码中,我们加载了一个包含股票价格和三个影响因素的数据集。然后,我们定义了一个线性回归模型,并对模型中的三个输入参数进行敏感性分析。我们使用SALib包中的saltelli函数生成1000个样本,然后运行模型并计算输出结果。最后,使用SALib包中的sobol函数对参数进行敏感性分析,并输出结果。

需要注意的是,这只是一个简单的示例,您可以根据自己的需要更改模型和参数设置,以实现更复杂的敏感性分析。在进行敏感性分析时,还需要仔细考虑模型的可靠性和准确性,以及数据质量的影响。

2.2步骤

2.2.1所用库的介绍

import pandas as pd
from sklearn.linear_model import LinearRegression
from SALib.sample import saltelli
from SALib.analyze import sobol
import numpy as np

skfuzzy是一个Python库,用于模糊逻辑系统的开发。它提供了一组函数和工具,可以帮助您在Python中构建和分析模糊系统。

首先导入了需要的包和库,包括pandas(用于数据处理)、sklearn.linear_model.LinearRegression(用于构建线性回归模型)、SALib.sample.saltelli(用于生成样本)、SALib.analyze.sobol(用于敏感性分析)、numpy(用于数据处理)等。

2.2.2加载数据

# 加载数据
f = open("D:\\桌面\\stock_prices.csv")
data=pd.read_csv(f)

2.2.3分割数据

# 分割数据
X = data.drop(['Stock_Price'], axis=1)
y = data['Stock_Price']

将dataframe中的数据分为自变量和因变量。在这个例子中,自变量包括利率、失业率和GDP,而因变量是股票价格。

2.2.4模型

# 定义模型
model = LinearRegression()

# 训练模型
model.fit(X, y)

使用sklearn.linear_model.LinearRegression构建线性回归模型,并对其进行训练,从而得到一个能够对股票价格进行预测的模型。

2.2.5设定输入参数

problem = {
    'num_vars': 3,
    'names': ['Interest_Rate', 'Unemployment_Rate', 'GDP'],
    'bounds': [[0, 0.1], [0, 0.1], [16, 18]]
}

定义了要进行敏感性分析的自变量及其取值范围

2.2.6生成样本

param_values = saltelli.sample(problem, 1000)

使用SALib.sample.saltelli生成参数的样本,其中problem是参数取值范围和变量名的一个字典,1000是生成的样本数。这里采用的是Sobol采样方法。

2.2.7运行模型

Y = np.zeros([param_values.shape[0]])
for i, X1 in enumerate(param_values):
    Y[i] = model.predict([X1])[0]

使用上面训练好的模型预测每个样本的因变量值,并将结果存储在Y中。

2.2.8分析敏感性

Si = sobol.analyze(problem, Y)

# 输出结果
print(Si['S1'])
print(Si['ST'])

使用SALib.analyze.sobol计算每个自变量的主效应和交互效应,并输出结果。其中,Si['S1']是主效应,表示每个自变量对因变量的贡献程度;Si['ST']是总效应,表示所有自变量的贡献程度

S1:包含每个输入参数的第一类Sobol指数。
ST:包含每个输入参数的总体变化指数。

import matplotlib.pyplot as plt
# 绘制Sobol分析结果的条形图
fig, ax = plt.subplots()
ax.bar(problem['names'], Si['S1'], yerr=Si['S1_conf'])
ax.set_ylabel('S1 sensitivity index')
ax.set_xticklabels(problem['names'])
ax.set_xticks(range(len(problem['names'])))
plt.show()

 其中,problem['names']是输入变量名称列表,Si['S1']是每个变量的第一类Sobol指数,Si['S1_conf']是每个指数的置信区间。通过这个函数,我们可以将每个变量的敏感性指数和它的置信区间一起绘制在条形图上。
其中,range(len(problem['names']))生成一个整数列表,用于将输入变量名称列表中的每个名称与x轴上的一个整数刻度线对应。

完整代码

# 导入所需的包和库
import pandas as pd
from sklearn.linear_model import LinearRegression
from SALib.sample import saltelli
from SALib.analyze import sobol
import numpy as np

# 加载数据
f = open("D:\\桌面\\stock_prices.csv")
data=pd.read_csv(f)


# 分割数据
X = data.drop(['Stock_Price'], axis=1)
y = data['Stock_Price']

# 定义模型
model = LinearRegression()

# 训练模型
model.fit(X, y)

# 设定输入参数
problem = {
    'num_vars': 3,
    'names': ['Interest_Rate', 'Unemployment_Rate', 'GDP'],
    'bounds': [[0, 0.1], [0, 0.1], [16, 18]]
}

# 生成样本
param_values = saltelli.sample(problem, 1000)

# 运行模型

Y = np.zeros([param_values.shape[0]])

#label_need=X.keys()[1:]
#X1=X[label_need].values

for i, X1 in enumerate(param_values):
    Y[i] = model.predict([X1])[0]

# 分析敏感性
Si = sobol.analyze(problem, Y)

# 输出结果
print(Si['S1'])
print(Si['ST'])

该程序的数据


2. 3应用范围

模糊综合评价方法可以应用于多个领域,例如决策分析、质量评价、风险评估、环境评价等。它的主要优点是可以考虑到各个因素之间的相互影响和相互制约,可以更全面、客观、科学地评价问题,但也存在一定的局限性,如隶属函数的选择、评价指标体系的构建等问题。
 

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

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

相关文章

springcloud+nacos+gateway案例

一、先搭建好springcloudnacos项目地址:https://javazhong.blog.csdn.net/article/details/128899999二、spring cloud gateway简述Spring Cloud Gateway 是Spring Cloud家族中的一款API网关。Gateway 建立在 Spring Webflux上,目标是提供一个简洁、高效的API网关&a…

FPGA解析串口协议帧4.0版本,移位寄存器实现,提供仿真文件以及源码

这里写目录标题1、前言2、4.0版本优势3、上板验证4、福利:工程代码的获取1、前言 FPGA解析串口协议帧3.0版本参考链接串口协议帧3.0版本 FPGA解析串口协议帧4.0版本,增加了错误重发功能,提供仿真文件以及源码 之前发布了FPGA解析串口协议帧3…

RMPE: Regional Multi-Person Pose Estimation (AlphaPose)阅读笔记

区域多人姿态估计 ICCV 2017 论文链接 代码链接 摘要: 野外多人姿态估计具有挑战性。sota人体检测器不可避免存在定位和识别误差,这些误差可能导致依赖人体检测器的单人姿态估计器(SPPE)的失败。本文提出了一种新的区域多人姿态估…

二、产品经理——【需求收集】【需求管理】

0. 学习目标 能够理解并描述需求能够收集并管理需求 1. 如何定义需求 1.1. 需求的定义 原始需求:没有经过任何分析,或者没有经过任何额外解读的需求信息 避免日后纠纷,尽量记录一下原始需求!先记录下来,后面再进行分…

MySQL数据库(数据库约束)

目录 数据库约束 数据库约束的类型: null约束 : unique约束(唯一约束): default约束(默认值约束): primary key约束(主键约束): for…

Active Directory 04 - Bronze Bit Attack (CVE-2020-17049)

写在最前 如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里: https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助,并分享学习和实践过程…

buuctf Basic

buuctf Basic 1.Linux Labs 根据提示我们可以知道需要远程连接linux服务器,这里使用xshell进行如下配置 输入ssh的用户名root,密码123456 连接成功 构造命令 ls …/ 查看文件 查看flag cat …/flag.txt 为flag{8fee8783-1ed5-4b67-90eb-a1d603a0208…

1信号的描述

信号的描述 1.1 连续时间与离散时间信号 一 信号 信号可以描述范围极其广泛的物理现象。信号可以分为确知信号与随机信号,也可以分为连续时间信号与离散时间信号。 确知信号可以表示成一个或几个自变量的函数。 信号的描述 连续时间信号 x(t), x(t1, t2)… 离散时间…

[TPAMI‘21] Heatmap Regression via Randomized Rounding

paper: https://arxiv.org/pdf/2009.00225.pdf code: https://github.com/baoshengyu/H3R 总结:本文提出一套编解码方法: 编码:random-round整数化 激活点响应值表征小数部分,使得GT可以通过编码后的heatmap解码得到&#xff1b…

flowable的变量实操及排坑

主要理解一下知识点 一、名字解释 详情解释传送门 setVariables 和 setVariablesLocal区别? 1.流程变量 在流程执行或者任务执行的过程中,用于设置和获取变量,使用流程变量在流程传递的过程中传递业务参数。 对应的表: act_ru_variable&…

操作系统——4.操作系统的运行机制和体系结构

这篇文章,我们一起来学习一下操作系统的运行机制和体系结构 目录 1.概述 2.运行机制 2.1两种指令 2.2两种处理器状态 ​编辑2.3两种程序 ​编辑2.4 操作系统运行机制小结 3.操作系统内核 ​4.操作系统的体系结构 5.小结 1.概述 首先,我们来看一下…

OpenResty | nginx内部发送请求

文章目录一. http请求的API二. 封装http工具函数三. CJSON工具类四. hash均衡(1) 原理(2) 实现一. http请求的API 关于OpenResty如何安装和编写业务逻辑可以参考这篇文章:点击跳转 nginx提供了内部API用以发送http请求: local resp ngx.location.capt…

听说2年以上的自动化测试都有16k+,4年10k的你还要等待奇迹吗?

个人简介学渣一枚,2017年6月某xx学校毕业。从事自动化测试已经4年,。2018年的时候,由于项目的原因,开始使用Robot Framework测试框架,正因为有Python的基础所以很快就理解了Robot Framework框架的工作原理,…

【Vue】浅谈vue2、vue3响应式原理,vue中数组的响应式,响应式常见问题分析

前言:此处响应式指的是数据响应式变化,而不是页面的响应式布局,页面的响应式布局在我的其他文章中有提到。 一、什么是vue响应式 Vue 最标志性的功能就是其低侵入性的响应式系统。组件状态都是由响应式的 JavaScript 对象组成的。当更改它们…

以太网基础

1.系统概述网卡(Network Interface Card,简称NIC),也称网络适配器,一个网卡主要包括OSI的最下面的两层,物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并…

Ambire 最新消息——2023 年 1 月

大家好,这里是我们在过去几周所做的一切的快速回顾。 发展 整个钱包的交易模拟和余额预测 我们推出了一项真正改变加密钱包 UX 游戏规则的功能:Ambire 现在向用户显示他们的钱包余额将如何更新,甚至在签署交易之前。 这项新功能可以分解为 Am…

PMP证书在哪个行业比较有用?

PMP 各个行业都能用,PMP 的知识体系是通用的,管理层的考试也有借鉴PMP知识的地方。历年考生考的最多的是IT 行业,其他行业也都有分布。PMP认证从国外引进大陆这么多年了,其火热程度依然不减,我个人认为是取决于市场的运…

34、基于51单片机锂电池电压电流容量检测仪表LCD液晶显示 原理图PCB程序设计

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元…

水泥|物流行业停车场电动发卡机读卡器K720的维护及使用注意事项

水泥|物流行业停车场电动发卡机读卡器K720采用工业级设计,表面烤漆处理,具有良好的耐磨耐腐蚀性。适应各种高、低温, 多灰尘等恶劣 环境。其发卡原理为拟人型摩擦式发卡,对各类变形卡有非常好的适应性。预留了活动式票箱安装位&am…

MyBatis 插件 + 注解轻松实现数据脱敏

问题在项目中需要对用户敏感数据进行脱敏处理,例如身份号、手机号等信息进行加密再入库。解决思路就是:一种最简单直接的方式,在所有涉及数据敏感的查询到对插入时进行密码加解密方法二:有方法一到出现对所有重大问题的影响&#…