Python机器学习-灵敏度分析

news2024/11/24 8:41:59

文章目录

    • 灵敏度分析详细步骤
    • 单参数分析

灵敏度分析详细步骤

灵敏度分析是一种用于确定输入参数变化对模型输出结果的影响程度的方法。以下是进行灵敏度分析的一般步骤:

  1. 确定模型:选择需要进行灵敏度分析的模型,该模型必须具有可变参数和可计算的输出结果。
  2. 选择参数:确定需要进行灵敏度分析的参数,并确定它们的范围和变化方式。
  3. 运行模型:使用所选的参数运行模型,并记录输出结果。
  4. 分析数据:使用统计方法,例如相关性分析或回归分析,对数据进行分析。
  5. 做出结论:根据数据分析的结果,确定每个参数对模型输出结果的影响程度,并根据这些结论来优化模型参数。

灵敏度分析可以使用各种工具和技术来实现,例如:

  1. 单参数分析:一个参数一个参数地变化,看模型输出结果如何变化。
  2. Morris方法:用少量的样本点,在参数空间中随机地选取点,并改变一个参数,计模型的输出。通过这些输出结果来计算各个参数的灵敏度指数。
  3. Sobol方法:使用Latin Hypercube Sampling (LHS)和Monte Carlo方法,在参数空间中随机地选取点。Sobol方法计算每个参数的一次和二次效应,以确定各个参数对输出结果的贡献。

灵敏度分析是一种有用的方法,可以帮助我们了解模型输出结果受输入参数的影响,进而优化模型的参数,提高模型的准确性和预测能力。

单参数分析

修改模型参数,可视化模型性能。以随机森林的树数量为例进行分析:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split

# 加载数据集
data = load_boston()

# 定义输入和输出变量
X = data['data']
y = data['target']

# 定义不同参数大小的范围
param_range = [10, 50, 100, 200, 300]

# 定义空列表用于存储模型性能
train_scores_mean = []
train_scores_std = []
test_scores_mean = []
test_scores_std = []

# 循环遍历不同的参数大小
for param in param_range:

    # 创建一个随机森林回归模型
    model = RandomForestRegressor(n_estimators=param)

    # 划分数据集为训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

    # 训练模型
    model.fit(X_train, y_train)

    # 预测测试数据集和训练数据集
    y_pred_train = model.predict(X_train)
    mse_train = mean_squared_error(y_train, y_pred_train)
    train_scores_mean.append(np.mean(mse_train))
    train_scores_std.append(np.std(mse_train))

    y_pred_test = model.predict(X_test)
    mse_test = mean_squared_error(y_test, y_pred_test)
    test_scores_mean.append(np.mean(mse_test))
    test_scores_std.append(np.std(mse_test))

# 可视化结果
fig, ax = plt.subplots(figsize=(8, 6))

ax.plot(param_range, train_scores_mean, label='Train MSE')
ax.fill_between(param_range, np.array(train_scores_mean) - np.array(train_scores_std),
                np.array(train_scores_mean) + np.array(train_scores_std), alpha=0.1)

ax.plot(param_range, test_scores_mean, label='Test MSE')
ax.fill_between(param_range, np.array(test_scores_mean) - np.array(test_scores_std),
                np.array(test_scores_mean) + np.array(test_scores_std), alpha=0.1)

ax.set_xlabel('Number of estimators', fontsize=14)
ax.set_ylabel('Mean Squared Error', fontsize=14)
ax.tick_params(axis='both', which='major', labelsize=12)

ax.legend(fontsize=12)
ax.grid(axis='y')

plt.tight_layout()
plt.show()

如下:
在这里插入图片描述

其中 x 轴表示 n_estimators 参数的大小,y 轴表示均方误差。图形中的两条曲线分别表示训练集和测试集上的均方误差随参数大小的变化情况。阴影区域表示每个参数大小对应的训练集和测试集均方误差的标准差范围。通过观察图形,我们可以确定最优的参数大小,以获得最佳的模型性能。例如,在这个示例中,当 n_estimators=100 时,测试集上的均方误差最低,因此这个参数大小可能是最优的选择。我们还可以观察到,随着 n_estimators 参数的增加,测试集上的均方误差呈现先降低后增加的趋势,这是因为过多的树可能会导致过拟合。

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

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

相关文章

算法框架-LLM-1-Prompt设计(一)

原文:算法框架-LLM-1-Prompt设计(一) - 知乎 目录 收起 1 prompt-engineering-for-developers 1.1 Prompt Engineering 1.1.1 提示原则 1. openai的环境 2. 两个基本原则 3. 示例 eg.1 eg.2 结构化输出 eg.3 模型检验 eg.4 提供示…

OpenCV实现视频的读取、显示、保存

目录 1,从文件中读取视频并播放 1.2代码实现 1.3效果展示 2,保存视频 2.1 代码实现 2.2 结果展示 1,从文件中读取视频并播放 在OpenCV中我们需要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件&am…

八大排序(三)堆排序,计数排序,归并排序

一、堆排序 什么是堆排序:堆排序(Heap Sort)就是对直接选择排序的一种改进。此话怎讲呢?直接选择排序在待排序的n个数中进行n-1次比较选出最大或者最小的,但是在选出最大或者最小的数后,并没有对原来的序列…

聊聊并发编程——线程池

目录 Java线程池 处理流程 线程池主要参数 常见的拒绝策略 execute和submit区别 关闭线程池 常见的线程池 newSingleThreadExecutor newFixedThreadPool newCachedThreadPool newScheduledThreadPool 线程池的状态 Java线程池 运用场景最多的并发框架,…

【面试总结大纲】

面试 springSpring AOP的具体实现核心概念分别指的是什么?基于注解的切面实现主要包括以下几个步骤:两个切面,它们之间的顺序是怎么控制的 springmvc的工作流程设计模式原则Spring 框架中用到了哪些设计模式? spring Spring AOP的具体实现 …

讲讲项目里的仪表盘编辑器(三)布局组件

布局容器处理 看完前面两章的讲解,我们对仪表盘系统有了一个大概的理解。接着我们讲讲更深入的应用。 上文讲解的编辑器只是局限于平铺的组件集。而在编辑器中,还会有一种组件是布局容器。它允许其他组件拖拽进入在里面形成自己的一套布局。典型的有分页…

如何实现电脑语音输入功能?

现在的手机都具备语音输入功能,并且识别率非常高,语音输入是目前最快速的文字输入方式,但是电脑上却无语音输入的功能,那么如何实现在电脑端也可进行语音输入的梦想呢?现在介绍一款小工具“书剑电脑语音输入法”&#…

Llama2-Chinese项目:4-量化模型

一.量化模型调用方式   下面是一个调用FlagAlpha/Llama2-Chinese-13b-Chat[1]的4bit压缩版本FlagAlpha/Llama2-Chinese-13b-Chat-4bit[2]的例子: from transformers import AutoTokenizer from auto_gptq import AutoGPTQForCausalLM model AutoGPTQForCausalLM…

DDD项目落地之充血模型实践

一、背景 充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率、提升可维护性; 二、DDD项目落地整体调用关系 调用关系图中的Entity为实体,从进入领域服务(Domin)…

基于Java的健身房会员管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【算法挨揍日记】day10——704. 二分查找、34. 在排序数组中查找元素的第一个和最后一个位置

704. 二分查找 704. 二分查找 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 解题思路&…

使用序列到序列深度学习方法自动睡眠阶段评分

深度学习方法,用于使用单通道脑电图进行自动睡眠阶段评分。 def build_firstPart_model(input_var,keep_prob_0.5):# List to store the output of each CNNsoutput_conns []######### CNNs with small filter size at the first layer ########## Convolutionnetw…

Ant-Design-Vue:a-range-picker组件国际化配置

在使用Ant-Design-Vue中的时间范围选择器开发个人项目时,发现默认显示为英文。如何解决呢? date-picker分类 Antd-Vue提供了DatePicker、MonthPicker、RangePicker、WeekPicker 几种类型的时间选择器,分别用于选择日期、月份、日期范围、周范…

JSON的MIME媒体类型是application/json

JSON(全称 JavaScript Object Notation)即JavaScript对象表示法,通知使用application/json媒体类型。 目录 1、JSON介绍 2、JSON语法 3、实践总结 运行环境: Windows-7-Ultimate-x64、Windows-10-BusinessEditions-21h2-x64 1…

最新AI智能问答系统源码/AI绘画系统源码/支持GPT联网提问/Prompt应用+支持国内AI提问模型

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…

总部位于德国的拉丁美洲在线杂货配送服务商Jokr完成5000万美元D轮融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于德国柏林的拉丁美洲在线杂货配送服务提供商Jokr今日宣布已完成5000万美元D轮融资。 本轮融资完后Jokr的估值已达到8亿美金,本轮融资由convialit Ventures领投,Lomba…

XDM,10.1

XDM,今天是国庆,就没有其他啥事情,祝大家国庆节快乐,玩的开心。 这两天放假也有时间捣鼓自己的事情了,挺开心的,第一件事就是把自己的一个小开发板修好了,然后自己的小os也能跑了几个假的线程。…

基于Javaweb的护肤品推荐系统 /基于ssm的护肤品销售系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

RabbitMQ之发布确认高级

RabbitMQ之发布确认高级 一、发布确认 SpringBoot 版本1.1 确认机制方案1.2 代码架构图1.3 配置文件1.4 添加配置类1.5 消息生产者1.6 回调接口1.7 消息消费者1.8 结果分析 二、回退消息2.1 Mandatory 参数2.2 消息生产者代码2.3 回调接口2.4 结果分析 三、备份交换机3.1 代码架…

在 Windows 终端运行已有的 Python 程序

在同一个路径下,输入全名,如图: