基于Python的LSTM网络实现单特征预测回归任务

长短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊的递归神经网络(RNN),适用于处理时间序列数据和其他序列数据的预测问题。它特别适合处理具有时间依赖性和长期依赖关系的序列数据。

以下是基于Python和Keras库的LSTM网络实现单特征预测回归任务的详细代码介绍:

import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, Dense
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split# 加载数据
# 在这里,我们假设你有一个CSV文件 'data.csv',其中有两个列:'date' 和 'value'
data = pd.read_csv('data.csv')
data['date'] = pd.to_datetime(data['date'])# 将数据按时间排序
data.sort_values(by='date', inplace=True)# 提取单一特征
feature = data['value'].values# 将数据缩放到0到1之间
scaler = MinMaxScaler(feature_range=(0, 1))
feature_scaled = scaler.fit_transform(feature.reshape(-1, 1))# 准备数据
def prepare_data(feature, look_back=1):X, y = [], []for i in range(len(feature) - look_back):X.append(feature[i:i + look_back])y.append(feature[i + look_back])return np.array(X), np.array(y)look_back = 10  # 选择过去多少个时间步作为输入
X, y = prepare_data(feature_scaled, look_back)# 划分训练和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 将输入数据重新调整为LSTM所需的三维数组格式
# 格式为 (样本数量, 时间步, 特征数量)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))# 创建LSTM模型
model = Sequential()
model.add(LSTM(50, input_shape=(look_back, 1)))
model.add(Dense(1))# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))# 预测
y_pred = model.predict(X_test)# 将预测结果反缩放
y_pred_inv = scaler.inverse_transform(y_pred)
y_test_inv = scaler.inverse_transform(y_test)# 评估模型
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test_inv, y_pred_inv)
print("均方误差 (MSE):", mse)# 可视化结果
import matplotlib.pyplot as pltplt.plot(data['date'].iloc[-len(y_test):], y_test_inv, label='真实值')
plt.plot(data['date'].iloc[-len(y_test):], y_pred_inv, label='预测值')
plt.legend()
plt.show()

以下是代码中各个部分的介绍:

  • 数据加载和预处理:代码开始通过pandas加载数据,并将其按时间排序。然后提取所需的特征,将数据缩放到0到1之间,以确保模型的稳定性。

  • 准备数据prepare_data函数将数据转换为训练和预测所需的格式,主要是通过滑动窗口机制,将时间序列数据转换为输入和目标的组合。

  • 模型创建和编译:创建了一个简单的LSTM模型,包括一个LSTM层和一个Dense层。模型使用adam优化器和均方误差作为损失函数。

  • 训练模型:通过调用model.fit,训练模型,并指定训练数据、验证数据、批次大小和训练轮次。

  • 预测和评估:在测试集上进行预测,将预测结果反缩放到原始值,然后计算均方误差(MSE)。最后,通过可视化比较预测值和真实值。

该代码示例展示了如何使用LSTM模型进行时间序列数据的预测任务。通过调整模型的超参数和层数,你可以优化模型以更好地适应你的数据和任务。

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

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

相关文章

AnaTraf网络流量分析仪:网络性能监测与诊断的利器

背景 在当今数字化时代,网络性能监测与诊断(Network Performance Monitoring and Diagnosis, NPMD)成为了企业和组织管理网络的重要一环。为了帮助企业更好地实现网络性能的监控和故障排除,AnaTraf的网络流量分析仪应运而生。 AnaTraf网络流量分析仪是…

避雷!7.7分,新增1区TOP被标记On Hold,5本已被踢除!

本周投稿推荐 SSCI • 2/4区经管类,2.5-3.0(录用率99%) SCIE(CCF推荐) • 计算机类,2.0-3.0(最快18天录用) SCIE(CCF-C类) • IEEE旗下,1/2…

【Django学习笔记(六)】MySQL的安装配置、启动关闭操作

MySQL的安装配置、启动关闭操作 前言正文1、初识网站1.1 实现静态网站与动态网站效果1.2 数据存储方式 2、MySQL的安装和配置2.1 MySQL下载2.2 安装补丁2.3 安装MySQL2.4 创建配置文件2.5 初始化 3、MySQL的启动和关闭4、MySQL连接测试4.1 MySQL 的连接方式4.2 使用 MySQL自带工…

加强企业合规:首席数据安全官CCDSO是关键

企业合规的重要性 企业合规是指遵守法律、监管要求和行业标准的一系列规定。在信息时代,数据安全和隐私保护是企业合规的核心要素。数据泄露不仅会导致企业财务损失,还可能破坏企业声誉,甚至对消费者造成伤害。因此,加强企业合规…

文字转语音软件下载教程

文字转语音软件下载教程 一,Whisper下载二,ggml-medium语言模型下载三,导入模型下载四,使用方法 一,Whisper下载 网址:https://bittly.cc/uL9xs 下拉选择: 进入下载页面,下载Whis…

0成本多平台撸收益也可卖资源玩法,小白轻松上手。详细教学日入500+附资源

详情介绍 0成本多平台撸收益卖短剧玩法小白也可轻松上手,保姆级教学上限收益不封顶、完全根据自身一个勤劳来决定。 这个相信大家都懂,首先呢 我也是思考了很久才决定把这个项目放出来因为可玩法太多了。 聪明的小伙伴会举一反三 这节课程放在外面大几…

【软件测试理论002】认识软件缺陷、缺陷生命周期、缺陷分类

目录 1 认识软件缺陷 1.1 什么是软件缺陷 1.2 缺陷存在哪些方面 1.3 软件缺陷示例 1.4 软件缺陷的表现形式 1.5 软件缺陷产生的原因 1.6 软件缺陷的根源 1.7 软件缺陷修复的费用 2 软件缺陷的信息分类 2.1 软件缺陷的生命周期 2.2 软件缺陷的信息 2.3 软件缺陷分类…

SiteServer 插件之 用户登录插件

1、插件的安装。 1.1、在网站后台上方点击“插件管理”,在界面的左侧选择“添加插件”,点击“用户登录插件”在插件详情界面中点击“安装插件”按钮。 1.2、安装完成后点击“管理插件”按钮,可以在已启用中看到”用户登录插件“。 2、插件使用。 2.1、 ”显示管理“->…

FileBird Pro插件下载:革新您的WordPress媒体库管理

WordPress媒体库是您网站的重要组成部分,它存储了所有的图片、视频、文档等文件。但随着网站的扩展,媒体库的管理变得越来越复杂。FileBird Pro插件,作为一款专为WordPress用户设计的媒体库管理工具,以其直观的界面和强大的功能&a…

Promise.all和 race

Promise.all() all方法可以完成并行任务, 它接收一个数组,数组的每一项都是一个promise对象。返回值: 成功时:当数组中所有的promise的状态都达到resolved的时候,就返回包含所有 Promise 结果的数组,并且…

Star-CCM+全局参数设置

前言 全局参数可以更方便我们在对一个模型进行多个工况仿真的情形。在同一模型下我们在仿真不同工况时,只需更改全局参数局即可。全局参数的应用可以大大提高仿真工况之间的切换设置效率。 1 创建全局变量 具体设置是在工具→参数中新建即可。创建完成后可以点击…

leetCode76. 最小覆盖子串

leetCode76. 最小覆盖子串 题目思路 代码 // 双指针 哈希表 // 这里cnt维护过程:先找到能够匹配T字符串的滑动窗口,然后这个cnt就固定了,因为i向前移动的同时,j也会维护着向前 // 就是当又出现能够满足T字符串的时候&#xff0…

报错:Error writing file ‘/tmp/MY76Z3jh‘

linux报错如图: 报这个错的原因是你的虚拟机中的/tmp文件下满了,执行SQL语句需要的临时空间不足,执行一下: df -h /tmp df -h /tmp/* 可以看到已用100% 输入: du -h /tmp 可以看到各个文件的空间占用情况,…

流畅的python-学习笔记_前言+第一部分

前言 标准库doctest 测试驱动开发:先写测试,推动开发 obj[key]实际调用实例的__getitem__方法 python数据模型 特殊方法 特殊方法一般自己定义,供py解释器调用,不推荐自己手动调用。 对于py内置类型,调用特殊方…

使用socket+Python实现ping

import os import socket import struct import select import time# 计算校验和&#xff0c;用于确保数据的完整性 def checksum(source_string):sum 0count 0max_count len(source_string)# 处理成对的字节while count < max_count - 1:val source_string[count 1] *…

AutoTable, Hibernate自动建立表替代方案

痛点 之前一直使用JPA为主要ORM技术栈&#xff0c;主要是因为Mybatis没有实体逆向建表功能。虽然Mybatis有从数据库建立实体&#xff0c;但是实际应用却没那么美好&#xff1a;当实体变更时&#xff0c;往往不会单独再建立一个数据库重新生成表&#xff0c;然后把表再逆向为实…

一分钱不花从HTTP升级到HTTPS

HTTP升级到HTTPS是一个涉及安全性和技术实施的过程&#xff0c;主要目的是为了提升网站数据传输的安全性&#xff0c;防止数据被窃取或篡改。以下是一些关于从HTTP升级到HTTPS的技术性要点和步骤概述&#xff0c;结合上述信息资源&#xff1a; 一、理解HTTPS的重要性 HTTPS (…

【ONE·基础算法 || 回溯和剪枝(暴搜/深搜)】

总言 主要内容&#xff1a;编程题举例&#xff0c;熟悉理解回溯剪枝类题型&#xff08;如何画决策树&#xff0c;如何使用深搜进行递归&#xff0c;如何运用剪枝&#xff0c;如何在一维数组/二维数组中使用&#xff09;。 文章目录 总言1、回溯和剪枝2、全排列&#xff08;med…

学习Rust的第29天: cat in Rust

今天即将是这个系列的最后一次内容&#xff0c;我们正在catRust 中从 GNU 核心实用程序进行重建。cat用于将文件内容打印到STDOUT.听起来很容易构建&#xff0c;所以让我们开始吧。 GitHub 存储库&#xff1a;GitHub - shafinmurani/gnu-core-utils-rust 伪代码 function read(…

【MySQL】第一次作业

【MySQL】第一次作业 1、在官网下载安装包2、解压安装包&#xff0c;创建一个dev_soft文件夹&#xff0c;解压到里面。3、创建一个数据库db_classes4、创建一行表db_hero5、将四大名著中的常见人物插入这个英雄表 写一篇博客&#xff0c;在window系统安装MySQL将本机的MySQL一定…