深度学习-第R2周——LSTM火灾温度预测

news2024/11/20 7:19:38

深度学习-第R2周——LSTM火灾温度预测

  • 深度学习-第R2周——LSTM火灾温度预测
    • 一、前言
    • 二、我的环境
    • 三、前期工作
      • 1、导入数据集
      • 2、数据可视化
    • 四、构建数据集
      • 1、设置x,y
      • 2、归一化
      • 3、划分数据集
    • 五、构建模型
    • 六、模型训练
      • 1、编译
      • 2、训练
    • 七、评估
      • 1、loss图
      • 2、预测

深度学习-第R2周——LSTM火灾温度预测

一、前言

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

二、我的环境

  • 电脑系统:Windows 10
  • 语言环境:Python 3.8.5
  • 编译器:colab在线编译
  • 深度学习环境:Tensorflow

三、前期工作

1、导入数据集

下载数据集,并划分训练集和测试集

import tensorflow as tf
import pandas as pd
import numpy as np

df_1 = pd.read_csv("woodpine2.csv")

2、数据可视化

import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['savefig.dpi'] = 500 #图片像素
plt.rcParams['figure.dpi'] = 500 #分辨率

fig, ax = plt.subplots(1, 3, constrained_layout = True, figsize = (14, 3))

sns.lineplot(data = df_1["Tem1"], ax = ax[0]) #画折线图
sns.lineplot(data = df_1["CO 1"], ax = ax[1])
sns.lineplot(data = df_1["Soot 1"], ax = ax[2])
plt.show()

在这里插入图片描述

四、构建数据集

dataFrame = df_1.iloc[:, 1:]
dataFrame

在这里插入图片描述

1、设置x,y

取前8个时间段的Tem1,CO1,Soot1为X,第九个时间段的tem1为y

width_X = 8
width_y = 1
len(dataFrame)

X = []
y = []

in_start = 0
for _, _ in df_1.iterrows(): #df.iterrows( )函数:可以返回所有的行索引,以及该行的所有内容
  in_end = in_start + width_X #0+8
  out_end = in_end + width_y #8+1

  if out_end < len(dataFrame):
    X_ = np.array(dataFrame.iloc[in_start:in_end, ])
    X_ = X_.reshape((len(X_) * 3))
    y_ = np.array(dataFrame.iloc[in_end : out_end, 0])

    X.append(X_)
    y.append(y_)
  
  in_start += 1

X = np.array(X)
y = np.array(y)

X.shape, y.shape

2、归一化

from sklearn.preprocessing import MinMaxScaler

sc = MinMaxScaler(feature_range = (0, 1))
X_scaled = sc.fit_transform(X) 
X_scaled.shape

3、划分数据集

取5000之前的数据为训练集,5000之后的为验证集

X_train = np.array(X_scaled[:5000]).astype('float64')
y_train = np.array(y[:5000]).astype("float64")

X_test = np.array(X_scaled[5000:]).astype("float64")
y_test = np.array(y[5000:]).astype("float64")

X_train.shape

五、构建模型

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Bidirectional
from tensorflow.keras import Input

model_lstm = Sequential()
model_lstm.add(LSTM(units = 64, activation = 'relu', return_sequences = True, input_shape = (X_train.shape[1], 3)))
model_lstm.add(LSTM(units = 64, activation = 'relu'))
model_lstm.add(Dense(width_y))

六、模型训练

1、编译

model_lstm.compile(optimizer=tf.keras.optimizers.Adam(1e-3), loss = 'mean_squared_error')

2、训练

history_lstm = model_lstm.fit(X_train, y_train, batch_size = 64, epochs = 40, validation_data = (X_test, y_test), validation_freq = 1)

在这里插入图片描述

七、评估

1、loss图

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #运行配置参数中的字体(font)为黑体(SimHei)

plt.rcParams['axes.unicode_minus'] = False #运行配置参数总的轴(axes)正常显示正负号(minus)


plt.figure(figsize = (5, 3), dpi = 120)

plt.plot(history_lstm.history['loss'], label = 'LSTM Training Loss')
plt.plot(history_lstm.history['val_loss'], label = 'LSTM Validation Loss')

plt.title("Training And Validation Loss")
plt.legend()
plt.show()

在这里插入图片描述

2、预测

predicted_y_lstm = model_lstm.predict(X_test)

y_test_one = [i[0] for i in y_test]
predicted_y_lstm_one = [i[0] for i in predicted_y_lstm]

plt.figure(figsize = (5, 3), dpi = 120)

plt.plot(y_test_one[:1000], color = 'red', label = '真实值')
plt.plot(predicted_y_lstm_one[:1000], color = 'blue', label = '预测值')

plt.title('Title')
plt.xlabel('X')
plt.ylabel("Y")
plt.legend()
plt.show()

在这里插入图片描述

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

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

相关文章

MySQL数据库实现主主同步

前言 MySQL主主同步实际上是在主从同步的基础上将从数据库也提升成主数据库&#xff0c;让它们可以互相读写数据库&#xff0c;从数据库变成主数据库&#xff1b;主从相互授权连接&#xff0c;读取对方binlog日志并更新到本地数据库的过程,只要对方数据改变&#xff0c;自己就…

K均值聚类分析流程

K均值聚类分析流程 一、案例背景 在某体育赛事中&#xff0c;意大利、韩国、罗马尼亚、法国、中国、美国、俄罗斯七个国家的裁判对300名运动员进行评分&#xff0c;现在想要通过评分上的差异将300名选手进行分类&#xff0c;计划将选手分为高水平、中水平、低水平三个类别。因…

Unity2D 商业游戏案例 - 梦幻西游(第二季 框架设计篇)

00 网址 来源 siki学院的&#xff08;1年有限期到期前下载的项目&#xff0c;现在已经过期&#xff0c;所以自己理清项目&#xff09; 所以更多的不是学习这个项目&#xff0c;而是学习理清该类型的项目的思路 Unity2D 商业游戏案例 - 梦幻西游&#xff08;第二季 框架设计篇&…

python+vue 在线考试系统的设计与实现

1.用户登录 用户要通过本系统查询对课程信息进行下载&#xff0c;必须先输入用户名和密码进行登陆。为了避免非其他人员都可以获得登陆权限&#xff0c;登陆系统不设注册过程&#xff0c;所有用户和教师的登陆信息将事先由管理人员直接对数据库进行录入。 2.教师 教师登录系统后…

【排序】排序这样写才对Ⅱ -冒泡排序与快速排序Ⅰ

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

【Spring6】| Spring6整合JUnit

目录 一&#xff1a;Spring6整合JUnit 1. Spring对JUnit4的支持 2. Spring对JUnit5的支持 一&#xff1a;Spring6整合JUnit 1. Spring对JUnit4的支持 准备工作&#xff1a;pom.xml 注&#xff1a;以前是直接使用单元测试Junit&#xff0c;现在使用Spring对Junit的整合&…

快递电子运单上,电话应隐藏6位以上,禁止显示这些信息

我国快递年业务量达千亿件&#xff0c;快递电子运单是应用于快递外包装的重要单据&#xff0c;每年耗用量很大。在强化个人信息保护方面&#xff0c;《快递电子运单》国家标准要求快递企业、电商经营主体等采取措施&#xff0c;避免在电子运单上显示完整的收寄件人个人信息。 …

【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现

Tensorflow 第一节&#xff1a;使用指南Tensorflow 安装神经网络一些基本概念隐藏层和输出层&#xff1a;神经元的输出公式Tensorflow 全连接层 Dense 与 顺序模型 SequentialDense LayerSequential Model代码实现一个神经网络实现方式一&#xff1a;手写神经网络* 实现方式二&…

JavaScript基础入门全解析(上)

JavaScript基础语法 什么是JavaScript&#xff08;简称js&#xff09; 1.首先了解前端页面的组成&#xff08;前端页面的三层结构&#xff09; ●HTML 表示了你的页面内有什么&#xff0c;组成页面的骨架 &#xff08;结构层&#xff09; ●CSS 表示了你的页面中每一个内容是…

Linux系统中安装新版本nacos(centos7)

1. 背景需求 由于一些限制,在客户现场的Linux操作系统中,没有安装docker k8s等容器,无法直接使用镜像安装,而且客户要求只能在原始的操作系统中安装最新版的nacos,(为什么需要安装最新版的nacos,因为检测国网检测到之前版本的nacos有漏洞,需要安装新版的nacos). 2. 下载nacos…

Windows10+Cmake+VS2019编译opencv

主要参考&#xff1a;Windows10CmakeVS2019编译opencv&#xff08;超级详细&#xff09;_vs编译opencv_乐安世家的博客-CSDN博客 OpenCV&#xff1a;Releases - OpenCV 想直接简单使用的话&#xff0c;不需要自己编译&#xff0c;下载编译好的就可以 假如需要用到opencv-contr…

【Python入门第四十九天】Python丨NumPy 数组拆分

拆分 NumPy 数组 拆分是连接的反向操作。 连接&#xff08;Joining&#xff09;是将多个数组合并为一个&#xff0c;拆分&#xff08;Spliting&#xff09;将一个数组拆分为多个。 我们使用 array_split() 分割数组&#xff0c;将要分割的数组和分割数传递给它。 实例 将数…

Docker教程:如何将Helix QAC创建为一个容器并运行?

在这个Docker教程中&#xff0c;你将了解到如何将Helix QAC创建为一个容器化的镜像并运行。 Docker的基本定义是一个开源且流行的操作系统级虚拟化&#xff08;通常称为“容器化”&#xff09;技术&#xff0c;它是轻量级且可移植的&#xff0c;主要在Linux和Windows上运行。D…

Linux主机 SSH 通过密钥登录

我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是&#xff0c;一般的密码方式登录&#xff0c;容易有密码被暴力破解的问题。所以&#xff0c;一般我们会将 SSH 的端口设置为默认的 22 以外的端口&#xff0c;或者禁用 root 账户登录。其实&#xff0c;有一个更…

换电脑 NoteExpress 数据备份迁移

前言 主要操作是跟着这篇博客做的&#xff1a;NoteExpress数据库备份和转移。但也有一些不一样的地方 旧电脑NoteExpress(NE)版本3.7&#xff0c;新电脑版本3.8 旧电脑 导出配置文件 桌面找到图标&#xff0c;打开位置&#xff0c;点击配置备份&#xff08;绿色的图标&#…

水库安全运行智慧管理平台解决方案筑牢防汛“安全墙”

解决方案 水库安全运行智慧管理系统解决方案&#xff0c;系统主要由降雨量监测站、水库水位监测站、大坝安全监测中的渗流量、渗流压力和变形监测站及视频和图像监测站等站点组成&#xff0c;同时建立规范、统一的监测平台&#xff0c;集数据传输、信息共享、数据储存于一体&a…

图解HTTP阅读笔记:第4章 返回结果的HTTP状态码

《图解HTTP》第四章读书笔记 图解HTTP第4章&#xff1a;返回结果的HTTP状态码4.1 状态码告知从服务器端返回的请求结果4.2 2XX成功4.2.1 200 OK4.2.2 204 No Content4.2.3 206 Parital Content4.3 3XX重定向4.3.1 301 Moved Permanently4.3.2 302 Found4.3.3 303 See Other4.3.…

服务(第三篇)Apache配置与应用

httpd服务支持的虚拟主机类型包括以下三种: 1.基于域名&#xff1a;为每个虚拟主机使用不同的域名&#xff0c;但是其对应的 IP 地址是相同的。 2.基于IP地址&#xff1a;为每个虚拟主机使用不同的域名&#xff0c;且各自对应的IP地址也不相同。这种方式需要为服务器配备多个网…

Femto基站及其射频方案

关于部署3G femto基站 3GPP定义第三代移动通信的目的是要为客户提供全方位的移动多媒体体验。但很多条件下&#xff0c;这一目的并未实现&#xff0c;尤其是在边远地区或居民聚集区。 一个可行的解决方案是在家庭范围内部署无需宏node-B基站即可提供最大移动数据速率的家用基站…

26基于模型预测控制MPC的永磁同步电机MATLAB代码

资源地址&#xff1a; 基于模型预测控制&#xff08;MPC&#xff09;的永磁同步电机Matlab代码-电子商务文档类资源-CSDN文库 主要内容&#xff1a; 包含单电流环MPC仿真&#xff08;仅电流环使用MPC策略&#xff0c;速度环使用PI调节器&#xff09;、速度环和电流环MPC仿真…