R4 LSTM-火灾温度预测

import tensorflow as tf
import pandas     as pd
import numpy      as npgpus = tf.config.list_physical_devices("GPU")
if gpus:tf.config.experimental.set_memory_growth(gpus[0], True)  #设置GPU显存用量按需使用tf.config.set_visible_devices([gpus[0]],"GPU")
print(gpus)df_1 = pd.read_csv("./woodpine2.csv")
import matplotlib.pyplot as plt
import seaborn as snsplt.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

 

Tem1CO 1Soot 1
025.00.0000000.000000
125.00.0000000.000000
225.00.0000000.000000
325.00.0000000.000000
425.00.0000000.000000
............
5943295.00.0000770.000496
5944294.00.0000770.000494
5945292.00.0000770.000491
5946291.00.0000760.000489
5947290.00.0000760.000487

5948 rows × 3 columns

 

width_X = 8
width_y = 1
X = []
y = []in_start = 0for _, _ in df_1.iterrows():in_end  = in_start + width_Xout_end = in_end   + width_yif 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 += 1X = np.array(X)
y = np.array(y)X.shape, y.shape
((5939, 24), (5939, 1))

 

from sklearn.preprocessing import MinMaxScaler#将数据归一化,范围是0到1
sc       = MinMaxScaler(feature_range=(0, 1))
X_scaled = sc.fit_transform(X)
X_scaled.shape
(5939, 24)
X_scaled = X_scaled.reshape(len(X_scaled),width_X,3)
X_scaled.shape

 

(5939, 8, 3)
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

 

(5000, 8, 3)

 

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,LSTM,Bidirectional
from tensorflow.keras        import Input# 多层 LSTM
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))
# 只观测loss数值,不观测准确率,所以删去metrics选项
model_lstm.compile(optimizer=tf.keras.optimizers.Adam(1e-3),loss='mean_squared_error')  # 损失函数用均方误差
X_train.shape, y_train.shape
((5000, 8, 3), (5000, 1))
history_lstm = model_lstm.fit(X_train, y_train, batch_size=64, epochs=40, validation_data=(X_test, y_test),validation_freq=1)
Epoch 1/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 8s 29ms/step - loss: 17407.9004 - val_loss: 8287.8789
Epoch 2/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 271.4785 - val_loss: 765.4532
Epoch 3/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 23ms/step - loss: 67.4131 - val_loss: 295.6400
Epoch 4/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 22ms/step - loss: 34.1102 - val_loss: 171.0410
Epoch 5/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - loss: 15.5997 - val_loss: 160.7888
Epoch 6/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 23ms/step - loss: 10.5981 - val_loss: 54.3319
Epoch 7/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 21ms/step - loss: 8.8930 - val_loss: 90.8075
Epoch 8/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 1s 17ms/step - loss: 8.3159 - val_loss: 59.9741
Epoch 9/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 15ms/step - loss: 7.6032 - val_loss: 135.2851
Epoch 10/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 1s 17ms/step - loss: 9.3867 - val_loss: 97.8612
Epoch 11/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 9.0518 - val_loss: 126.9608
Epoch 12/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 8.0520 - val_loss: 86.8619
Epoch 13/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 7.3589 - val_loss: 99.1821
Epoch 14/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 9.5558 - val_loss: 88.7941
Epoch 15/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 7.5996 - val_loss: 69.6262
Epoch 16/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 7.3958 - val_loss: 79.1977
Epoch 17/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 21ms/step - loss: 7.4730 - val_loss: 70.9978
Epoch 18/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 21ms/step - loss: 8.0841 - val_loss: 75.3642
Epoch 19/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 21ms/step - loss: 6.9333 - val_loss: 63.2329
Epoch 20/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 22ms/step - loss: 8.4154 - val_loss: 63.0497
Epoch 21/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 11.4677 - val_loss: 133.5659
Epoch 22/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 17ms/step - loss: 10.6824 - val_loss: 130.6112
Epoch 23/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 7.0621 - val_loss: 74.8764
Epoch 24/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 7.3307 - val_loss: 93.0864
Epoch 25/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 23ms/step - loss: 6.2863 - val_loss: 81.8337
Epoch 26/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 3s 22ms/step - loss: 6.0637 - val_loss: 93.4994
Epoch 27/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 21ms/step - loss: 7.9105 - val_loss: 67.1826
Epoch 28/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 8.9972 - val_loss: 97.9051
Epoch 29/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 7.0677 - val_loss: 60.4530
Epoch 30/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 22ms/step - loss: 6.8877 - val_loss: 61.1201
Epoch 31/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 22ms/step - loss: 7.2029 - val_loss: 59.1220
Epoch 32/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 21ms/step - loss: 7.4075 - val_loss: 53.2644
Epoch 33/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 1s 17ms/step - loss: 7.1988 - val_loss: 50.9414
Epoch 34/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 7.0997 - val_loss: 72.2796
Epoch 35/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 1s 18ms/step - loss: 8.1966 - val_loss: 61.2261
Epoch 36/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 1s 17ms/step - loss: 7.1526 - val_loss: 58.8710
Epoch 37/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 3s 22ms/step - loss: 8.1424 - val_loss: 93.2947
Epoch 38/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 6.9144 - val_loss: 82.5569
Epoch 39/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 20ms/step - loss: 7.3446 - val_loss: 91.3829
Epoch 40/40
79/79 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 7.6978 - val_loss: 58.8386
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号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()

 

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()

 

30/30 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step

from sklearn import metrics
"""
RMSE :均方根误差  ----->  对均方误差开方
R2   :决定系数,可以简单理解为反映模型拟合优度的重要的统计量
"""
RMSE_lstm  = metrics.mean_squared_error(predicted_y_lstm, y_test)**0.5
R2_lstm    = metrics.r2_score(predicted_y_lstm, y_test)print('均方根误差: %.5f' % RMSE_lstm)
print('R2: %.5f' % R2_lstm)

均方根误差: 7.67063 R2: 0.82748

收获: 学会如何通过LSTM进行文本的预测

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

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

相关文章

什么是跨域问题?后端如何解决跨域问题?

跨域问题是指浏览器为了安全&#xff0c;对不同域&#xff08;包含不同协议、不同端口或不同主机名&#xff09;的请求进行限制&#xff0c;从而导致请求无法正常访问后端接口。 跨域问题的产生源于浏览器的同源策略&#xff08;Same-Origin Policy&#xff09;&#xff0c;这…

vue | rollup 打包 | 配置 rollup.config.js 文件,更改 rollup的行为

原因&#xff1a;将入口文件 转为 esm 和 umd 两种格式&#xff0c;要配置 rollup Rollup 已内置到 vite 工具中&#xff0c; 命令行打包&#xff0c;参数多&#xff0c;麻烦——》解决&#xff1a;创建配置文件&#xff0c;js 写的&#xff0c;rollup.config.js 配置 rollup.…

服务器中物理处理器和逻辑处理器的区别?

在服务器或任何计算机系统中&#xff0c;**物理处理器&#xff08;Physical Processor&#xff09;和逻辑处理器&#xff08;Logical Processor&#xff09;**是两个不同的概念&#xff0c;它们分别代表了硬件层面和操作系统层面的处理能力。 物理处理器&#xff08;Physical P…

【Gin框架】中间件

1. 什么是中间件 (Middleware)&#xff1f; 在 Web 框架的语境下&#xff0c;中间件 (Middleware) 是一种可重用的软件组件或函数&#xff0c;它被设计用来在 HTTP 请求-响应生命周期中的特定点拦截和处理请求或响应。在 Gin 框架中&#xff0c;中间件特指符合 gin.HandlerFun…

STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议

STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议&#xff0c;主要用于帮助位于网络地址转换 (NAT) 设备&#xff08;如路由器&#xff09;后面的客户端发现自己的公共 IP 地址和端口号。这对于建立点对点 (P2P) 通信至关重要&#xff0c;尤其是在 VoIP&#…

AQS详解

概念 AQS&#xff08;AbstractQueuedSynchronizer&#xff09; 是并发包&#xff08;java.util.concurrent&#xff09;的核心组件&#xff0c;用于构建锁和同步器&#xff08;如 ReentrantLock、Semaphore、CountDownLatch 等&#xff09;。它通过维护一个 CLH 队列 和 同步状…

python实战项目76:51job数据采集与分析

python实战项目76:51job数据采集与分析 一、数据采集二、数据预处理2.1 导入相关库、读取数据2.2 查看数据2.3 处理数据、删除重复值、删除空值2.4 处理薪资水平字段数据三、数据可视化3.1 不同公司规模招聘岗位数量分布3.2 不同公司性质招聘岗位数量分布3.3 不同年限要求招聘岗…

每天一个前端小知识 Day 7 - 现代前端工程化与构建工具体系

现代前端工程化与构建工具体系 1. 为什么要工程化&#xff1f;&#xff08;面试高频问题&#xff09; 问题痛点&#xff1a; 模块太多、无法组织&#xff1b;代码冗长、性能差&#xff1b;浏览器兼容性差&#xff1b;团队协作混乱&#xff0c;缺少规范与自动化。 工程化目标…

shell脚本--变量及特殊变量,算术逻辑运算

1.变量是什么 2.变量类型 3.动态&#xff0c;静态&#xff0c;强弱类型 4.变量的命名 5.变量的定义和引用 5.1三种变量类型 普通变量 环境变量 局部变量 5.2单引号&#xff0c;双引号&#xff0c;强弱引用 双引号对变量赋值的影响01:59&#xff1a;给变量加双引号&#x…

Python粒子群优化算法结合热力图TIFF文件案例

Python粒子群优化算法结合热力图TIFF文件案例 1. 项目概述 本项目使用粒子群优化算法(PSO)在热力图TIFF文件中寻找温度最高点。热力图通常以地理空间数据形式存储(TIFF格式),包含温度分布信息。PSO算法模拟鸟群觅食行为,通过粒子协作在搜索空间中寻找最优解。 import …

使用Mambaout替换YOLObackbone 整合全局信息,提升遮挡目标检测中定位能力,以及小目标、多尺度

近年来&#xff0c;Transformer 架构虽在各类任务中成为主流&#xff0c;但注意力机制的二次复杂度对长序列处理构成挑战。为此&#xff0c;类似 RNN 的模型如 Mamba 被引入&#xff0c;其核心是状态空间模型&#xff08;SSM&#xff09;&#xff0c;旨在以线性复杂度处理长序列…

力扣网C语言编程题:接雨水(动态规划实现)

一. 简介 本文记录力扣网上的逻辑编程题&#xff0c;涉及数组方面的&#xff0c;这里记录一下 C语言实现和Python实现。 二. 力扣网C语言编程题&#xff1a;接雨水 题目&#xff1a;接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子…

关于ubuntu环境下vscode进行debug的随笔

CMakeLists.txt的编写 顶层目录的CMakelists.txt 目录&#xff1a;./CMakeLists.txt #./CMakeLists.txt cmake_minimum_required(VERSION 3.10) project(xxx_project_name LANGUAGES CXX) #设置工程名# 设置 C 标准和编译选项 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_ST…

技术演进中的开发沉思-9:window编程系列-内核对象线程同步(下)

今天我们继续走进 Windows 内核的世界&#xff0c;就昨天没说完的内核对象与线程同步内容接着继续&#xff0c;它们就像精密仪器里的齿轮&#xff0c;虽不显眼&#xff0c;却至关重要。 异步设备 I/O 在 Windows 系统中&#xff0c;异步设备 I/O 就像是一场精心编排的接力赛。…

用AI从0开始量化交易-Anaconda环境(env)和缓存(pkg)更改储存位置

之前介绍了Anaconda的安装和环境建立&#xff0c;最近自己的量化交易工具开发的差不多了&#xff0c;却发生了尴尬的问题&#xff0c;C盘被不断增大的conda环境和缓存占据得快满了。 在网上找了些教程&#xff0c;大多是讲迁移的&#xff0c;专门讲改本地改储存位置的比较少&am…

Python爬虫工作基本流程及urllib模块详解

在2025年的数据驱动时代&#xff0c;网络数据成为企业与个人的“金矿”&#xff0c;而Python爬虫则是挖掘这金矿的“利器”&#xff01;无论是抓取电商价格、分析社交媒体趋势&#xff0c;还是构建知识库&#xff0c;Python爬虫都能让你事半功倍。然而&#xff0c;爬虫开发并非…

thinkphp8 模型-一对一,一对多,多对多 学习

thinkphp 命令创建模型&#xff08;和laravel基本一样&#xff09; php think make:model User 在模型里创建字段 protected $table User; protected $pk id; // 定义返回哪些字段 protected $field [id, name]; // 返回字段的类型 protected $schema [id > int] 模…

非线性方程组求解:复杂情况下的数值方法

在科学研究和工程应用中&#xff0c;非线性方程组的求解是一个常见的挑战。尤其当方程组包含复杂函数&#xff08;如特殊函数、积分、微分等&#xff09;&#xff0c;使得雅可比矩阵难以解析求导时&#xff0c;传统的基于解析雅可比矩阵的 Newton-Raphson 方法难以直接应用。本…

边缘计算网关EG8200Mini首发开箱视频丨破解工业互联“协议孤岛”,重塑数据价值核心引擎行业痛点直击|低代码开发

数据采集4G边缘计算网关plc 工业现场设备品牌林立&#xff08;西门子、三菱、欧姆龙等30品牌PLC&#xff09;、协议碎片化&#xff08;Modbus/OPC UA/BACnet等&#xff09;、网络环境复杂&#xff08;户外无光纤、车间电磁干扰&#xff09;——传统网关难以实现多源异构设备统一…

2024-2025下期《网络设备与配置》期末模拟测试

一、 单选题(每题2分&#xff0c;共60分) RIP协议的默认最大跳数是&#xff08; &#xff09; A. 10 B. 15 C. 20 D. 30以下哪个命令可以用来在交换机上进入全局配置模式&#xff1f;&#xff08; &#xff09; A. 使用enable命令 B. 使用configure terminal命令 C. 使用inte…