2024五一数学建模C题保姆级分析完整思路+代码+数据教学

news2024/12/23 16:13:56

2024五一数学建模竞赛(五一赛)C题保姆级分析完整思路+代码+数据教学

煤炭是中国的主要能源和重要的工业原料。然而,随着开采深度的增加,地应力增大,井下煤岩动力灾害风险越来越大,严重影响着煤矿的安全高效开采。在各类深部煤岩动力灾害事故中,冲击地压已成为威胁中国煤矿安全生产最重要的灾害之一,冲击地压事故易造成严重的人员伤亡和财产损失。近年来,研究人员进行了大量深入的研究,采取了许多防控措施,中国煤矿安全形势持续稳步改善。但是,冲击地压事故仍时有发生,煤矿安全形势依然严峻,冲击地压的监测预警和有效防控仍是煤矿安全生产中亟待解决的科技问题。在深部煤矿开采过程中,可以监测声发射(AE)和电磁辐射(EMR)信号,电磁辐射和声发射传感器每30秒采集一个数据,可通过这些数据的变化趋势判断目前工作面或巷道是否存在冲击地压危险。电磁辐射和声发射数据随着采煤工作面的推进波动,一般在冲击地压发生前数天(如0-7天,即大约冲击地压发生前7天内)会有一些趋势性前兆特征,因此我们将电磁辐射和声发射数据分为5类,(A)正常工作数据;(B)前兆特征数据;(C)干扰信号数据;(D)传感器断线数据;(E)工作面休息数据,其中,A、B、C 类为工作面正常生产时的数据,D类为监测系统不正常时的数据,E类为停产期间的数据。附件1给出了2019年1月9日-2020年1月7日采集的电磁辐射和声发射数据,并且标记出了所对应的A、B、C类以及D或者E类(D/E)数据。

首先来看看问题是什么:

问题1:如图1,已知现场工作面的部分电磁辐射和声发射信号中存在大量干扰信号,有可能是工作面的其他作业或设备干扰等因素引起,这对后期的电磁辐射和声发射信号处理造成了一定的影响。应用附件1和2中的数据,完成以下问题。

添加图片注释,不超过 140 字(可选)

(1.1) 建立数学模型,对存在干扰的电磁辐射和声发射信号进行分析,分别给出电磁辐射和声发射中的干扰信号数据的特征(不少于3个)。

(1.2) 利用问题(1.1)中得到的特征,建立数学模型,对2022年5月1日-2022年5月30日的电磁辐射和2022年4月1日-2022年5月30日及2022年10月10日-2022年11月10日声发射信号中的干扰信号所在的时间区间进行识别,分别给出电磁辐射和声发射最早发生的5个干扰信号所在的区间,完成表1和表2。

问题总体分析:

将问题拆解,可以得到以下内容:

题目要求分析电磁辐射(EMR)和声发射(AE)信号,建立数学模型以预测和识别冲击地压的危险。

问题1:针对存在干扰的信号数据,分析其特征,并建立模型识别干扰信号的时间区间。

问题2:分析显示前兆特征的信号,建立模型识别前兆特征信号的时间区间,以预测可能发生的冲击地压。

问题3:为了尽早发出预警,建立模型计算每个数据采集时刻前兆特征出现的概率。

数据集分析:

首先需要大家先对题目给的三个数据集进行数据清洗和预处理,以便后续进行更深入的分析。

l 附件1 包含声波强度(声发射AE)、时间和类别(正常、干扰等)信息。 主要用于声发射信号的分析。

l 附件2 包含电磁辐射(EMR)和时间信息,分布在三个不同的时间段。

l 主要用于电磁辐射信号的分析。

l 附件3 也包含电磁辐射数据,但有五个不同的时间段。与附件2相似,主要用于更详细的电磁辐射信号分析,覆盖更多的时间段。

为了分析电磁辐射(EMR)数据中的干扰信号,可以使用时间序列分析的方法,例如应用异常值检测算法。下面给出了这部分可以使用的代码:

import numpy as np

# Define a function to detect outliers based on the mean and standard deviation

def detect_outliers(data, window=7, sigma=2):

rolling_mean = data['EMR'].rolling(window=window).mean()

rolling_std = data['EMR'].rolling(window=window).std()

# Define upper and lower bounds for normal data

lower_bound = rolling_mean - (sigma * rolling_std)

upper_bound = rolling_mean + (sigma * rolling_std)

# Identify points where data values exceed these bounds

data['Outlier'] = (data['EMR'] < lower_bound) | (data['EMR'] > upper_bound)

return data

# Apply the outlier detection function

emr_outliers = detect_outliers(emr_combined_3)

# Visualize the data with outliers marked

plt.figure(figsize=(12, 6))

plt.plot(emr_combined_3['Time'], emr_combined_3['EMR'], label='EMR Data', color='blue')

plt.scatter(emr_combined_3['Time'][emr_outliers['Outlier']], emr_combined_3['EMR'][emr_outliers['Outlier']], color='red', label='Outliers')

plt.title('EMR Data with Outliers Highlighted')

plt.xlabel('Time')

plt.ylabel('EMR Value')

plt.xticks(rotation=45)

plt.legend()

plt.grid(True)

plt.show()

它可以进行异常检测,首先定义了一个用于检测异常值的函数,该函数基于数据的移动平均和标准差计算异常阈值。异常值是指那些超出给定标准差倍数的数据点。随后,该函数在数据集中标记这些异常值,并通过绘图可视化这些潜在的干扰信号。

接下来就是问题一的分析了。

问题一分析:针对题目C的第一问,我们需要分析电磁辐射(EMR)和声发射(AE)信号中存在的干扰信号,并识别它们的特征。这包括定义干扰信号的特征、建立用于识别干扰的数学模型,并最终确定存在干扰信号的时间区间。可以使用以下步骤:

l 特征定义与数据预处理:我们需要定义干扰信号可能具有的特征(如信号强度的突变、频率的异常变化等),并对数据进行适当的预处理(如滤波、去噪等)。

l 模型建立:建立适合识别干扰信号的数学模型。这可能包括统计模型、机器学习模型或基于规则的模型。

l 时间区间识别:应用建立的模型,识别出数据中干扰信号所在的时间区间。

这里给大家推荐一种模型方法:隔离森林(Isolation Forest)。这种模型特别适合处理高维度数据和识别异常值或干扰,因为它基于随机森林的思想,通过隔离机制来识别不符合整体分布的点。

隔离森林是一种有效的无监督学习算法,用于异常检测。它的工作原理是随机选择一个特征,然后随机选择该特征的一个切分值,以此方式递归地划分数据。异常点通常是那些具有较短路径长度的数据点,即它们容易被隔离。

过程:

l 数据准备:整理和标准化数据,准备适合模型的输入格式。

l 模型训练:使用隔离森林模型来训练数据。

l 干扰识别:应用模型识别干扰并标记可能的干扰时间区间。

l 结果可视化:将识别结果可视化,以便进一步分析。

Python代码:

from sklearn.ensemble import IsolationForest

import matplotlib.pyplot as plt

# 假设已有清洗和准备好的EMR数据 'emr_combined_3'

# 数据标准化

emr_data_normalized = (emr_combined_3['EMR'] - emr_combined_3['EMR'].mean()) / emr_combined_3['EMR'].std()

# 转换为适合模型输入的格式

emr_data_for_model = emr_data_normalized.values.reshape(-1, 1)

# 初始化隔离森林模型

iso_forest = IsolationForest(n_estimators=100, contamination='auto', random_state=42)

# 训练模型

iso_forest.fit(emr_data_for_model)

# 预测数据点的异常状态

outliers = iso_forest.predict(emr_data_for_model)

# 将异常检测结果转换为布尔值,便于可视化

is_outlier = outliers == -1

# 可视化结果

plt.figure(figsize=(12, 6))

plt.plot(emr_combined_3['Time'], emr_combined_3['EMR'], label='EMR Data')

plt.scatter(emr_combined_3['Time'][is_outlier], emr_combined_3['EMR'][is_outlier], c='r', label='Detected Interferences')

plt.title('Detected Interferences in EMR Data Using Isolation Forest')

plt.xlabel('Time')

plt.ylabel('Normalized EMR Value')

plt.legend()

plt.show()

在这里,首先对EMR数据进行了标准化处理,然后使用隔离森林模型来训练和预测数据点的异常状态。最后,将检测到的异常点在图中标记出来,以红色点显示。这种方法可以有效地帮助我们识别数据中的潜在干扰,且不需要任何先验知识。

之后就需要识别出数据中干扰信号所在的时间区间了,为了识别数据中干扰信号所在的时间区间,我们将使用前面提到的隔离森林模型的输出来确定异常数据点,然后基于这些数据点找出连续的时间区间,这些区间将被认为是潜在的干扰信号所在区间。

首先,我们将使用隔离森林模型来识别EMR数据中的异常点。然后,我们将这些异常点分组,以便识别出连续的时间段。以下是python代码:

import pandas as pd

from sklearn.ensemble import IsolationForest

# 假设已有清洗和准备好的EMR数据 'emr_combined_3',并且已经包含时间戳 'Time' 和电磁辐射值 'EMR'

# 数据标准化

emr_data_normalized = (emr_combined_3['EMR'] - emr_combined_3['EMR'].mean()) / emr_combined_3['EMR'].std()

# 转换为适合模型输入的格式

emr_data_for_model = emr_data_normalized.values.reshape(-1, 1)

# 初始化隔离森林模型

iso_forest = IsolationForest(n_estimators=100, contamination='auto', random_state=42)

# 训练模型并预测

outliers = iso_forest.fit_predict(emr_data_for_model)

# 转换为布尔数组,其中True表示异常

emr_combined_3['Outlier'] = outliers == -1

# 识别连续的异常区间

emr_combined_3['Time'] = pd.to_datetime(emr_combined_3['Time']) # 确保时间列是datetime类型

emr_combined_3['Block'] = (emr_combined_3['Outlier'] != emr_combined_3['Outlier'].shift()).cumsum()

outlier_blocks = emr_combined_3[emr_combined_3['Outlier']].groupby('Block').agg(Start_Time=('Time', 'min'), End_Time=('Time', 'max'))

# 显示异常时间区间

print(outlier_blocks)

这段代码首先对数据进行了标准化,并且使用隔离森林模型来标识异常点。然后,它创建了一个新列Block来帮助识别连续的异常块。最后,通过分组并聚合这些连续的异常块,可以得到每个干扰信号的开始时间和结束时间。

这些时间区间表示模型识别为异常的连续时间段,很可能是由干扰引起的。通过观察这些区间,可以进一步分析干扰的特性或进行必要的控制措施。这个方法提供了一个自动化的方式来检测和记录干扰信号在时间上的分布,非常适合于监控和分析大规模数据集中的异常活动。

后两问思路及代码后续更新哦,需要的同学看文末文章

问题2:已知在发生冲击地压危险前约7天内,电磁辐射和声发射信号存在随时间循环增大的趋势(如图2所示),这类信号我们称为前兆特征信号。在出现前兆特征信号之后的约7天内,有可能发生冲击地压,所以一般情况下出现前兆特征信号之后,会采取一定措施尽可能的防止冲击地压发生。应用附件1和2中的数据,完成以下问题。

(2.1) 建立数学模型,对电磁辐射和声发射信号中的前兆特征信号进行分析,重点分析信号的变化趋势,分别给出电磁辐射和声发射信号危险发生前(前兆特征)数据的趋势特征(不少于3个)。

(2.2) 利用问题(2.1)中得到的特征,建立数学模型,对2020年4月8日-2020年6月8日及2021年11月20日-2021年12月20日的电磁辐射和2021年11月1日-2022年1月15日声发射信号中的前兆特征所在的时间区间进行识别,分别给出电磁辐射和声发射信号最早发生的5个前兆特征信号所在的时间区间,完成表3和表4。

问题3:为了尽早的识别前兆特征信号,在前兆特征信号出现的第一时间发出预警,需要在每次数据采集的时刻对危险进行预判。附件3给出了一些非连续时间段采集的电磁辐射和声发射信号数据。请建立数学模型,给出附件3中的每个时间段最后时刻出现前兆特征数据的概率,完成表5。

其中更详细的思路,各题目思路、代码、讲解视频、成品论文及其他相关内容,可以点击下方群名片哦!

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

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

相关文章

机器学习实战 —— 工业蒸汽量预测(二)

目录 文章描述背景描述数据说明数据来源实战内容2.数据特征工程2.1数据预处理和特征处理2.1.1 异常值分析2.1.2 归一化处理2.1.3 特征相关性 2.2 特征降维2.2.1 相关性初筛2.2.2 多重共线性分析2.2.3 PCA处理降维 文章描述 数据分析&#xff1a;查看变量间相关性以及找出关键变…

2024年第二十六届“华东杯”(A题)大学生数学建模挑战赛|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看华东杯 (A题&#xff09;&#xff01; 问题一&a…

数组模拟双链表-java

通过数组来模拟双链表&#xff0c;并执行一些插入和删除的功能。 目录 一、问题描述 二、模拟思路 1.变量解释 2.数组初始化 3.在下标是k的结点后面插入一个结点 4.删除下标为k的结点 5.基本功能解释 三、代码如下 1.代码如下&#xff1a; 2.读入数据&#xff1a; 3…

VSCode 配置 CMake

VSCode 配置 C/C 环境的详细过程可参考&#xff1a;VSCode 配置 C/C 环境 1 配置C/C编译环境 方案一 如果是在Windows&#xff0c;需要安装 MingW&#xff0c;可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。 注意安装路径不要出现中文。 打开 windows…

【LocalAI】(10):在autodl上编译embeddings.cpp项目,转换bge-base-zh-v1.5模型成ggml格式,本地运行main成功

1&#xff0c;关于 localai LocalAI 是一个用于本地推理的&#xff0c;与 OpenAI API 规范兼容的 REST API。 它允许您在本地使用消费级硬件运行 LLM&#xff08;不仅如此&#xff09;&#xff0c;支持与 ggml 格式兼容的多个模型系列。支持CPU硬件/GPU硬件。 【LocalAI】&…

【算法小白周赛1A】分析 - 题解与代码

题目链接&#xff1a;https://www.starrycoding.com/problem/155 题目描述 小可可最近在学数学运算&#xff01;他希望考考你&#xff0c;给你两个整数 A , B A,B A,B&#xff0c;询问 A B A\times B AB 是否是偶数。 注意&#xff0c;可能存在前导 0 0 0&#xff0c;比如…

【C++】:日期类的实现 -- 日期计算器

前言 1.日期类是一种十分经典的类型。对于C的初学者&#xff0c;它能够帮助我们融会贯通许多C的基础知识&#xff0c;它涉及许多的基础语法&#xff0c;比如引用&#xff0c;函数重载&#xff0c;传值/传参返回&#xff0c;构造函数&#xff0c;运算符重载&#xff0c;const成…

Python 与 TensorFlow2 生成式 AI(五)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十二章&#xff1a;用生成式人工智能玩视频游戏&#xff1a;GAIL 在之前的章节中&#xff0c;我们已经看到如何使用生成式人工智能来生成…

如何在Linux上安装Python?2024Python安装教程

在Linux上安装Python并不难&#xff0c;对于Ubuntu或Debian系统&#xff0c;使用命令sudo apt install python3&#xff1b;对于CentOS、Red Hat或Fedora系统&#xff0c;使用命令sudo yum install python3。 如何在Linux上安装Python&#xff1f; 确切的安装步骤有所不同&am…

Django后台项目开发实战七

为后台管理系统换风格 第七阶段 安装皮肤包 pip install django-grappelli 在 setting.py 注册 INSTALLED_APPS [grappelli,django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.stat…

微隔离实施五步法,让安全防护转起来

前言 零信任的最核心原则→最小权限 安全的第一性原理→预防 零信任的最佳实践→微隔离 “零信任”这个术语的正式出现&#xff0c;公认是在2010年由Forrester分析师John Kindervag最早提出。时至今日&#xff0c;“零信任”俨然已成安全领域最热门的词汇&#xff0c;做安全…

如何使用Go语言进行并发安全的数据访问?

文章目录 并发安全问题的原因解决方案1. 使用互斥锁&#xff08;Mutex&#xff09;示例代码&#xff1a; 2. 使用原子操作&#xff08;Atomic Operations&#xff09;示例代码&#xff1a; 3. 使用通道&#xff08;Channels&#xff09; 在Go语言中&#xff0c;进行并发编程是常…

《QT实用小工具·四十九》QT开发的轮播图

1、概述 源码放在文章末尾 该项目实现了界面轮播图的效果&#xff0c;包含如下特点&#xff1a; 左右轮播 鼠标悬浮切换&#xff0c;无需点击 自动定时轮播 自动裁剪和缩放不同尺寸图片 任意添加、插入、删除 单击事件&#xff0c;支持索引和自定义文本 界面美观&#xff0c;圆…

遥感雷达波段的原理及应用

雷达波段是不同波长的组。每一种都有其独特的穿透地球表面的能力。它们还可以揭示环境的不同方面。 雷达频段在电磁频谱内具有特定的频率范围。这些波段由 L-、S-、C- 和 X-波段等字母表示。稍后会详细介绍这一点。 什么是合成孔径雷达&#xff1f; 合成孔径雷达 (SAR) 是一…

C语言实验-循环结构和选择结构

一&#xff1a; 求和:1(14)(149)(14916)…(14916…n2)? 其中n的值由键盘输入&#xff1b; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int sum 0;int n 0;printf("请输入一个整数");scanf("%d", &n);for (int i 0; i &l…

MATLAB 字符串

MATLAB 字符串 在MATLAB中创建字符串非常简单。实际上&#xff0c;我们已经使用了很多次。例如&#xff0c;您在命令提示符下键入以下内容- 示例 my_string ‘(cainiaojc.com)’ MATLAB将执行上述语句并返回以下结果 my_string (cainiaojc.com) MATLAB将所有变量视为数组&a…

Python基础学习之记录中间文件

倘若想记录代码运行过程中的结果文件&#xff0c;那么以下函数仅供参考 代码示例&#xff1a; import os import datetime import sys import pandas as pd# 定义总的文件夹路径 base_folder E:\\D\\log\\product_data_compare_log# 定义一个函数来创建带时间戳的文件夹 def…

特征提取(Feature Extraction)常见统计特征笔记(三)

统计特征是描述数据集中值的一组量&#xff0c;通常用于了解数据的分布、集中趋势和变异程度。常见的统计特征包括均值、中位数、众数、标准差、方差等。下面会详细解释每个统计特征&#xff0c;并给出相应的Python代码。 1、均值&#xff08;Mean&#xff09;&#xff1a;所有…

【团体程序设计天梯赛】往年关键真题 L2-036 网红点打卡攻略 模拟 L2-037 包装机 栈和队列 详细分析完整AC代码

【团体程序设计天梯赛 往年关键真题 详细分析&完整AC代码】搞懂了赛场上拿下就稳 【团体程序设计天梯赛 往年关键真题 25分题合集 详细分析&完整AC代码】&#xff08;L2-001 - L2-024&#xff09;搞懂了赛场上拿下就稳了 【团体程序设计天梯赛 往年关键真题 25分题合…

【webrtc】MessageHandler 4: 基于线程的消息处理:以Fake 收发包模拟为例

G:\CDN\rtcCli\m98\src\media\base\fake_network_interface.h// Fake NetworkInterface that sends/receives RTP/RTCP packets.虚假的网络接口,用于模拟发送包、接收包单纯仅是处理一个ST_RTP包 消息的id就是ST_RTP 类型,– 然后给到目的地:mediachannel处理: 最后消息消…