LSTM预测汇率涨跌分析

news2024/11/27 22:22:04

前言

本文主要是采用lstm对汇率涨跌进行预测,是一个二分类的预测问题。

步骤解析

数据构造

原始数据是单变量数据

import  pandas as pd

file_path  = r"./huilv.csv"
data = pd.read_csv(file_path, usecols=[1],encoding='gbk')
data['level'] = -1   

 	美元	level
0	7.2996	-1
1	7.2775	-1
2	7.2779	-1
3	7.2695	-1
4	7.2791	-1
...	...	...
3655	6.9475	-1
3656	6.9131	-1
3657	6.8926	-1
3658	6.8912	-1
3659	6.8265	-1
3660 rows × 2 columns

构造成两列数据,后一列为涨跌情况

for i in range(len(data)-1):
    if data.iloc[i+1,0] -  data.iloc[i,0] > 0:
         data.iloc[i+1,1] = 1
    else :
         data.iloc[i+1,1] = 0

	美元	level
0	7.2996	-1
1	7.2775	0
2	7.2779	1
3	7.2695	0
4	7.2791	1
...	...	...
3655	6.9475	0
3656	6.9131	0
3657	6.8926	0
3658	6.8912	0
3659	6.8265	0
3660 rows × 2 columns

构造训练和测试集

def scaler(X_train,X_test):
    """
    数据归一化
    """
    mm = MinMaxScaler()
    mm.fit(X_train)
    mmX_train = mm.transform(X_train)
    mmX_test = mm.transform(X_test)
    return mmX_train,mmX_test

def create_dataset(dataset, dataset_label, look_back=1):
    dataX, dataY = [], []
    for i in range(len(dataset_label)-look_back-1):
        a = dataset[i:(i + look_back), :]
        dataX.append(a)
        b = dataset_label[i+look_back, 0]
        dataY.append(b)
        print('a: %s, b: %s' % (a, b))
    return numpy.array(dataX), numpy.array(dataY)

构造模型

# create and fit the LSTM network
model = Sequential()
model.add(LSTM(64, input_shape=(look_back,1)))  # 与上面的重构格式对应,要改都改,才能跑通代码
model.add(Dense(1))
model.compile(loss='binary_crossentropy', optimizer='adam',metrics=['acc'])
history =  model.fit(trainX, trainY, epochs=100, batch_size=1000, validation_split=0.2)

损失函数图像
请添加图片描述

预测

# 模型预测并计算结果
from sklearn.metrics import confusion_matrix
y_pred = model.predict(testX)
# 计算混淆矩阵
cm = confusion_matrix(testY, y_pred.argmax(axis=1))
print('Confusion Matrix')
print(cm)
# 评价指标
print("Precision: ",  (cm[0][0] + cm[1][1])/ (cm[0][0]+cm[1][0]+cm[0][1]+cm[1][1]))
print("Accuracy: ",  (cm[0][0] + cm[0][1])/ (cm[0][0]+cm[1][0]+cm[0][1]+cm[1][1]))
print("Recall",  (cm[0][0] )/ (cm[0][0]+cm[1][0]))
23/23 [==============================] - 0s 1ms/step
Confusion Matrix
[[384   0]
 [344   0]]
 Precision:  0.5274725274725275
Accuracy:  0.5274725274725275
Recall 0.5274725274725275

请添加图片描述

总结

  • lstm 二分类预测,效果看起来一般,算是第一次接触分类问题
  • 结果有更进一步的优化,本案例只做跑通整个流程

备注

需要完整源代码和数据集,或者想要沟通交流,请私聊,谢谢.

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

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

相关文章

打造高效接口自动化框架,YAML测试用例封装技巧大揭秘!

目录 前言: 一、框架介绍 本框架包含两个部分: 本框架的构建目标是: 二、框架目录结构 三、规范YAML测试用例封装步骤 四、框架使用 五、总结 前言: 本文介绍了一个基于Python和PyTest的接口自动化框架封装项目实战&#…

最佳实践,高效编写Web自动化测试强制交互方法封装技巧

目录 前言: 一、Web自动化测试的基本原理 二、封装强制交互方法 1、输入框强制交互 2、其他强制交互 三、封装基础类方法 四、总结 前言: Web自动化测试是现代软件开发中必不可少的部分。Web自动化测试可以帮助测试人员快速地验证页面功能并发现潜…

Fiddler 抓包工具下载安装基本使用(详)

在做软件测试或者Bug定位的时候会用到一些抓包工具,当然抓包工具还要一些其他用途可以做一些API的抓取,那么本篇内容就来讲 Fiddler 抓包工具的下载安装以及如何来实际的应用。讲了这些可能有的读者还不知道这个"Fiddler"怎么读呢?…

详解flutter刷新流程,让你的应用更流畅

本文已授权公众号【缦图技术团队】发布 详解flutter刷新流程,让你的应用更流畅 一、概述 Flutter 是谷歌推出的高性能、跨端UI框架,可以通过一套代码,支持 iOS、Android、Windows/MAC/Linux 等多个平台,且能达到原生性能。Flutte…

pthread_getspecific和pthread_setspecific详解

写在前面 在Linux系统中使用C/C进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来…

【CV】Yolov8:ultralytics目标检测、关键点检测、语义分割

note Yolov8提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求骨干网络和 Neck 部分可能参…

KVM(一)Linux部署KVM及新建虚拟机

目录 一、准备工作 1.1 防火墙、SElinux 二、安装KVM 2.1 yum源 2.2 安装工具包 2.3 安装KVM组件 2.4 查看磁盘/新建目录 2.5 安装Linux GUI可视化界面 三、KVM桌面版新建虚拟机 3.1 挂载目录 3.2 新建raw/qcow2文件 3.3 新建虚拟机 3.4 KVM命令行新建虚拟机 一、…

Linux rootfs

前言 通过《initrd&init进程》我们知道rootfs 是文件系统的根目录,其包含了操作系统所需的所有文件和目录,包括程序、库文件、配置文件、设备文件等,它是系统启动时必须加载的文件系统之一。当系统启动后,内核会首先挂载 roo…

本地Jrebel 许可服务器搭建

一、下载 下载 JrebelLicenseServer.zip 二、解压 解压后进入 bin 目录 三、服务安装|启动|停止|删除|... 安装服务:JrebelLicenseServer.bat install启动服务:JrebelLicenseServer.bat start停止服务:JrebelLicenseServer.bat stop删除服…

【Three.js】第一、二章 入门指南和基础知识

01.介绍 Three.js 非常庞大,你可以用它做无数的事情。 在第一章中,我们将学习所有基础知识,例如创建第一个场景、渲染、添加对象、选择正确的材料、添加纹理、为所有内容制作动画,甚至将其放到网上。有些人可能会觉得这部分有点…

如何轻松掌握接口测试——POST请求和COOKIE使用技巧?

目录 引言 请求方法: POST请求方法:添加资源(对服务端已存在的资源也可以做修改和删除操作) 实战练习 实战练习2 COOKIE: Status Code:协议状态码 接口文档 结语 引言 对于初学者或者没有接口测试…

[笔记]渗透测试工具Burpsuit《一》Burpsuit介绍

文章目录 前言一、安装配置1.1 环境1.2 安装过程1.3 科技过程 二、常用功能2.1 Manual penetration testing features2.2 Advanced/custom automated attacks2.3 Automated scanning for vulnerabilities2.4 Productivity tools2.5 Extensions 三、拓展功能 前言 Burp Suite(b…

设计原则-单一职责原则

在编程大环境中,评价代码组织方式质量的好坏涉及到各个方面,如代码的可读性、可维护性、可复用性、稳定性等各个方面。而在面向对象语言中也可以通过以下各个方面: 类中方法的设计类中属性的设计类(接口、抽象类、普通类)的设计类与类之间的…

IMU 积分进行航迹推算

IMU 积分进行航迹推算 Reference https://github.com/gaoxiang12/slam_in_autonomous_driving 1.0 递推方程推导 \quad 连续时间内的 IMU 运动学方程: R ˙ R ω ∧ q 1 2 q ω ˙ p ˙ v v ˙ a \dot{\mathbf{R}}\mathbf{R}\omega ^{\wedge} \\ \dot{\mathbf{…

[CTF/网络安全] 攻防世界 weak_auth 解题详析

[CTF/网络安全] 攻防世界 weak_auth 解题详析 弱认证弱认证绕过方法姿势Burp Suite 爆破 总结 题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。 弱认证 weak_auth翻译:弱认证 这个术语通常用来描述一种较弱的安全认证方法或机制&am…

HTML语法、常用标签、表单,CSS选择器。简单登录页面的实现

HTML和CSS粗略介绍 文章目录 HTML和CSS粗略介绍HTML页面第一个HTML页面添加图片和视频 HTML语法规范div标签span标签转义字符 HTML常用标签换行和分割线标题超链接列表元素表格 HTML表单输入框和按钮多行文本 CSS样式CSS选择器input标签选择器id选择器类选择器 组合选择器和优先…

【HackTheBox Bagel】打靶记录

一、namp扫描到5000 8000 22 端口 二、访问8000端口,看到跳转到域名bagel.htb,加入到hosts 看到该url 像文件包含,尝试fuzz一波 尝试找公私钥均未果,找到了cmdline 进一步对其包含 HTTP/1.1 200 OK Server: Werkzeug/2.2.2 …

Java多线程异常处理

文章目录 一. 线程中出现异常的处理1. 线程出现异常的默认行为2. setUncaoughtExceptionHandler()方法处理异常3. setDefaultUncaoughtExceptionHandler()方法进行异常处理 二. 线程组内出现异常 一. 线程中出现异常的处理 1. 线程出现异常的默认行为 当单线程中初出现异常时…

工业缺陷检测数据及代码(附代码)

介绍 目前,基于机器视觉的表面缺陷检测设备已广泛取代人工视觉检测,在包括3C、汽车、家电、机械制造、半导体与电子、化工、制药、航空航天、轻工等多个行业领域得到应用。传统的基于机器视觉的表面缺陷检测方法通常采用常规图像处理算法或人工设计的特征加分类器。一般而言…

【Tomcat下载及使用说明】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1.什么是Tomcat 2.Tomcat下载流程及注意问题 …