数学建模--数据统计类赛题分析~~神经网络引入

news2024/9/22 13:40:50

1.缺失值的处理

(1)像在下面的这个表格里面,这个对于缺失的数据,我们需要分情况进行分析,如果这个数据就是一个数值型的数据,我们可以使用平均值进行处理;

(2)对于这个分类型数据,就是比如一个问题,你想要吃香蕉,苹果,还是梨,对于这个问题,要求我们必须要选择一个,这个时候,我们就可以依据这个大家的喜好程度,把这个众数作为这个填充值,这个时候是合理的;

(3)有些时候,如果我们有理由去说明这个数据的不存在是合理的,这个时候我们就可以不去处理这个缺失的数据;

2.异常值的处理

(1)对于这个异常值,我们可以使用正态分布的3西格玛原则进行检验,在这个μ+3西格玛之外的,我们就称之为异常值;

(2)对于这个箱线图,包括上面的两个孤立的数据点,我们把这个孤立的点就叫做异常值,上面的线就是极大值,下面的线就是极小值;

(3)对于这个异常值的处理方法,我们可以等同于这个缺失值的处理;

(4)箱型图(箱线图)的说明介绍

这个箱型图就是需要知道一个叫做分位数的东西,这个有上四分位数,下四分位数,这个4是因为我们把这个所有的区间划分为了4份,例如这个0~10的数据,我们生成4份,就是0~2.5,2.5~5,5~7.5,7.5~10,这个5就是中位数,这个是毋庸置疑的,但是这个上四分位数就是7.5,下四分位数就是2.5.仅此而已;

3.赛题分析--神经网络算法

(1)这个题目大概是要干什么,我们需要做什么,这个就是我们首先需要搞明白的,我在这个下面放了一张图片,这个里面就是让我们去探讨这个AQI(可以用来衡量空气质量的一种指标),我们想要探讨这个指标和PM2.5     PM10  SO2  CO    NO2   O3这些物质的含量有没有关系,我们是否可以根据这个物质含量去预测这个AQI指标;

(2)我们在预测的时候使用到了下面的这个第一种数据处理的方法,就是数据的Min-Max规范化处理方法;因为这个神经网络需要分为这个数据集和训练集,以及这个相关的层,感兴趣的可以根据这个案例下去自主学习,

(3)我之前在我的主页专栏python人工智能有相关的介绍,但是还是浅显的,我自己对于这个方面也不是很了解,同学们可以自行学习,我也是第一次在这个matlab上面去运行这个代码,很多地方不是很了解,还是需要学习的,同学们可以自己下去学习;

(4)下面有这个源代码,前提这个需要有数据,但是这个数据是excel形式的,我在这个博客里面没有办法导入进来,想使用这个案例以及相关数据的小伙伴可以私信我,我觉得这个案例还是值得研究的;

%%问题:
%      有一组北京空气质量数据,通过数据中空气中的各成分含量(PM2.5,PM10,SO2,
%   CO,NO,O3)预测空气评价指标AQI值。

%% 清空环境变量
warning off
clc;
clear;
close all;

%% 导入数据
date=xlsread("北京空气质量数据(1).xlsx");
%% 划分训练集和测试集
date1=randperm(126);
% date1=double(1:126);
P_train=date(date1(1:90),5:10)';
T_train=date(date1(1:90),1)';
M=size(P_train,2);                %返回行向量数

P_test=date(date1(91:end),5:10)';
T_test=date(date1(91:end),1)';
N=size(P_test,2);

%% 数据归一化
[P_train,ps_input]=mapminmax(P_train,0,1); %将最小值和最大值映射到[0,1]
P_test=mapminmax("apply",P_test,ps_input);

[~,ps_output]=mapminmax(T_train,0,1);
t_test=mapminmax("apply",T_test,ps_output);
%% 数据平铺
P_train=double(reshape(P_train,6,1,1,M));%将数据切割为6×1
P_test=double(reshape(P_test,6,1,1,N));

t_train=T_train';
t_test=t_test';
%% 数据格式转换(元胞数组)
p_train=cell(M,1);
for i=1:M
    p_train(i,1)=num2cell(P_train(:,:,1,i),1);
end

p_test=cell(N,1);
for i=1:N
    p_test(i,1)=num2cell(P_test(:,:,1,i),1);
end

%% 创建模型
layers=[
    sequenceInputLayer(6)           % 建立输入层

    lstmLayer(4,"OutputMode","last")  % LSTM层 
    reluLayer                         % Relu激活层
    
    fullyConnectedLayer(1)            % 全连接层
    regressionLayer];                 % 回归层
%% 参数设置
options=trainingOptions("adam",...          % adam 梯度下降法
    "MiniBatchSize",15,...                  % 批大小
    "MaxEpochs",2000,...                    % 最大迭代次数
    "InitialLearnRate",8e-2,...             % 初始学习率
    "LearnRateSchedule","piecewise" ,...    % 学效率下降
    "LearnRateDropFactor",0.08,...           % 学效率下降因子
    "LearnRateDropPeriod",1000,...           % 经过1000次训练后 
    "Shuffle","every-epoch",...             % 每次训练打乱数据集
    "Plots","training-progress",...         % 画出曲线
    "Verbose",false); 
%% 训练模型
net=trainNetwork(p_train,t_train,layers,options);


%% 仿真测试
t_sim1=predict(net,p_train);
t_sim2=predict(net,p_test );

%% 格式转换(double)
t_sim1=double(t_sim1);
t_sim2=double(t_sim2);

%% 数据反归一化
T_sim1=mapminmax("reverse",t_sim1,ps_output);
T_sim2=mapminmax("reverse",t_sim2,ps_output);

%% 均方根误差
error1=sqrt(sum((t_sim1'-t_train).^2)./M);
error2=sqrt(sum((t_sim2'-t_train).^2)./N);

%% 查看网络结构
analyzeNetwork(net)

%% 相关指标计算
% R
R1=1-norm(T_train-t_sim1')^2/norm(T_train-mean(T_train))^2;
R2=1-norm(T_test-t_sim2)^2/norm(T_test-mean(T_test))^2;

disp("训练集数据R2:", num2str(R1));
disp("训练集数据R2:", num2str(R2));

%% MAE
mae1=sum(abs(t_sim1'-T_train)./M);
mae2=sum(abs(t_sim2-T_train)./N);

disp(["训练集数据的MAE:",num2str(mae1)]);
disp(["训练集数据的MAE:",num2str(mae2)]);

%% MBE
mbe1=sum(t_sim1'-T_train)./M;
mbe2=sum(t_sim2-T_test)./N;

disp(["训练集数据的MBE:", num2str(mbe1)]);
disp(["训练集数据的MBE:", num2str(mbe2)]);

%% 绘图
figure
plot(1:M,T_train,"r-*",1:M,t_sim1,"b-o","LineWidth",1)
legend("真实值","预测值")
xlabel("预测样本")
ylabel("预测结果")
grid

figure
plot(1:N,t_sim2,"b-o","LineWidth",1)
legend("预测值")
xlabel("预测样本")
ylabel("预测结果")
grid

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

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

相关文章

nx上darknet的使用-目标检测-自定义训练与制作预训练模型

目录 1 训练yolov4-tiny 1.1 文件准备 1.1.1 Annotations 1.1.2 JPEGImages 1.1.3 labels 1.1.4 trained_models 1.1.5 classes.name 1.1.6 create_labels_txt.py 1.1.7 custom_training.data 1.1.8 get_labels.py 1.1.9 get_train_val.py 1.1.10 train…

PG大会周五于杭州举办;Pika发布4.0;阿里云MySQL上线Zero-ETL集成能力

重要更新 1. PostgreSQL中国技术大会举行12日(周五)于杭州举办,是PostgreSQL社区年度的大会,举办地点:杭州君尚云郦酒店(杭州市上城区临丁路1188号),感兴趣的可以考虑现场参加 ( [1]…

C++入门基础知识2

1.引用 1.1引用的使用 1.引用在实践中主要是引用传参和引用做返回值中减少拷贝提高效率和改变引用对象时同时改变被引用对象 2.引用传参跟指针传参功能是类似的,引用传参相对更方便一些 3.引用和指针在实践中相辅相成,功能有重叠性,各有特…

[论文笔记]构建基于RAG聊天机器人的要素

引言 今天带来一篇构建RAG的论文笔记:FACTS About Building Retrieval Augmented Generation-based Chatbots。 基于生成式人工智能构建企业聊天机器人迅速成为行业中最受关注的应用之一,旨在提高员工生产力。 然而,构建成功的企业聊天机器…

【LeetCode】2187. 完成旅途的最少时间

1. 题意 2. 分析 二分法有一个关键特征:如果答案answer满足题意,那么对于任何整数i,如果有i>answer,那么i也会是一个存在的解,只不过不是最优解。 本题想要找出一个达到 totalTrips 趟需要的最少时间成本t&#x…

如何入门单片机嵌入式?

入门单片机嵌入式系统开发可以按照以下步骤进行。我收集归类了一份嵌入式学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学,敲个22就可以免费获得。 选择单片机开发板&…

FakeNewsGPT4:通过知识增强的大规模视觉语言模型推进多模态假新闻检测

FakeNewsGPT4: Advancing Multimodal Fake News Detection through Knowledge-Augmented LVLMs 论文地址:https://arxiv.org/abs/2403.01988https://arxiv.org/abs/2403.01988 1.概述 当前,多模态假新闻的大量涌现导致了显著的分布差异,这一现状亟需我们开发具备广泛适用性…

input 输入框,带清空图标

https://andi.cn/page/621495.html

虚幻引擎ue5游戏运行界面白茫茫一片,怎么处理

根剧下图顺序即可调节游戏运行界面光照问题: 在大纲里找到post,然后选中它,找到Exposure 把最低亮度和最高亮度的0改为1即可

【算法】代码随想录之链表(更新中)

文章目录 前言 一、移除链表元素(LeetCode--203) 前言 跟随代码随想录,学习链表相关的算法题目,记录学习过程中的tips。 一、移除链表元素(LeetCode--203) 【1】题目描述: 【2】解决思想&am…

JS登录页源码 —— 可一键复制抱走

前期回顾 https://blog.csdn.net/m0_57904695/article/details/139838176?spm1001.2014.3001.5501https://blog.csdn.net/m0_57904695/article/details/139838176?spm1001.2014.3001.5501 登录页预览效果 <!DOCTYPE html> <html lang"en"><head…

el-table 动态添加删除 -- 鼠标移入移出显隐删除图标

<el-table class"list-box" :data"replaceDataList" border><el-table-column label"原始值" prop"original" align"center" ><template slot-scope"scope"><div mouseenter"showClick…

电脑如何重新分盘——保姆级教程

方法一&#xff1a; 通过此电脑&#xff0c;鼠标右键点击此电脑&#xff0c;点击管理 点击磁盘管理进入 二&#xff0c;磁盘分区 我这里选择的是“磁盘0”的C盘进行操作&#xff0c;一般新电脑拿到手的时候都处于这么一个状态&#xff0c;只有一个磁盘分区。现在我要把C盘拆分…

翻译语音识别在线的软件,分享4款实用的软件!

在全球化日益加速的今天&#xff0c;语言沟通已成为人们生活中不可或缺的一部分。无论是商务洽谈、学术交流还是日常交流&#xff0c;翻译语音识别技术都扮演着举足轻重的角色。今天&#xff0c;我们就来揭秘一下&#xff0c;那些能让你在语言沟通中如虎添翼的翻译语音识别软件…

LCM通讯的使用

本文主要介绍LCM通讯的基本使用&#xff0c;内容主要整理自官网 https://lcm-proj.github.io/lcm/index.html LCM&#xff0c;即Library for Communication and Marshalling&#xff0c;是一组用于消息传递与数据封装的库和工具&#xff0c;它主要的面向对象是要求高带宽、低延…

[Elasticsearch]ES近似实时搜索的原因|ES非实时搜索的原因|ES Near real-time search

Elasticsearch-专栏&#x1f448;️ 往期回顾&#xff1a; ES单一查询定义&#x1f448;️ ES深分页问题&#x1f448;️ ES商城搜索实战&#x1f448;️ ES环境搭建:单节点模式/集群模式&#x1f448;️ ES开启认证&#x1f448;️ 近似实时搜索&#xff08;Near real-t…

稀疏辅助信号平滑方法在一维信号降噪和旋转机械故障诊断中的应用(MATLAB)

基于形态成分分析理论&#xff08;MCA&#xff09;的稀疏辅助信号分解方法是由信号的形态多样性来分解信号中添加性的混合信号成分&#xff0c;它最早被应用在图像处理领域&#xff0c;后来被引入到一维信号的处理中。在基于MCA稀疏辅助的信号分析模型中&#xff0c;总变差方法…

自定义“请求头”

请求头是HTTP请求的重要部分&#xff0c;可以用“头部字典”按需定制请求头。 (笔记模板由python脚本于2024年07月12日 19:28:44创建&#xff0c;本篇笔记适合喜欢钻研web知识点的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free…

JavaDS —— 栈 Stack 和 队列 Queue

栈的概念 栈是一种先进后出的线性表&#xff0c;只允许在固定的一端进行插入和删除操作。 进行插入和删除操作的一端被称为栈顶&#xff0c;另一端被称为栈底 栈的插入操作叫做进栈/压栈/入栈 栈的删除操作叫做出栈 现实生活中栈的例子&#xff1a; 栈的模拟实现 下面是Jav…

mysql和oracle数据库的备份和迁移

本文主要讲述了mysql数据库的备份和迁移&#xff1b;oracle的肯定是备份和数据迁移&#xff0c;同时介绍了linux的定时任务。 一、mysql Docker容器下mysql备份方法 1、数据库备份 # 进入容器docker exec -it 《containerId容器id》 /bin/bash# mysqldump命令备份并生成数据…