当前位置: 首页 > news >正文

2-深度学习挖短线股-4-预测数据计算

2.4 预测数据计算

       为了便于后面的回测使用,将预测数据的计算与训练数据的计算分开处理,二者计算实现逻辑基本相同,对2018年1月1日至2020年6月30日间的数据进行预测。首先定义了数据预处理函数,将连续 n 天的 K 线数据(如开盘价、收盘价、成交量等)合并为一行特征向量;然后读取股票代码列表,对每只股票的数据进行检查,如果尚未预处理,则读取扩展数据,筛选出 2020 年 6 月 30 日前的数据,并确保包含 2017 年 12 月 31 日之后的数据及其前 FEATURE_N 天的数据,最后调用预处理函数将多日数据合并为单行特征,保存到预测用的预处理文件夹中。这种处理方式为模型预测准备了合适的输入特征,同时确保了数据的时间连续性和有效性。

        程序的核心功能是为股票预测模型准备输入数据,通过滑动窗口技术将历史时序数据转换为适合模型处理的特征矩阵。程序处理 2017 年 12 月 31 日之后至 2020 年 6 月 30 日的数据,确保每个预测样本包含足够的历史信息。

2.4.1 功能总结

  1. 时序特征构建:使用前 10 天的多项技术指标(如 MA、vol_MA 等)构建特征向量
  2. 预测数据筛选:仅处理 2017 年底之后的数据,确保与训练数据时间范围分离
  3. 数据连续性保证:确保每个样本有完整的 10 天历史数据,避免因数据缺失导致的偏差
  4. 批量预处理:自动处理所有符合条件的股票,生成标准化的预测输入文件
# -*- coding: utf-8 -*-
"""
Created on Mon Jun  9 09:30:59 2025
预测数据计算
@author: Administrator
"""import numpy as np  # 导入数值计算库
import pandas as pd  # 导入数据处理库
import os  # 导入操作系统接口库# 使用前FEATURE_N的K线数据作为输入特征
FEATURE_N = 10  # 定义时间窗口大小,即使用前10天的数据构建特征# 预处理,将n行数据作为输入特征
def data_preprocessing(df, stk_code, n):df = df.copy()  # 创建数据副本,避免修改原始数据# 删除无效数据列,保留特征数据ft_df = df.drop(columns=['date', 'buy'])  # 移除日期和目标值列,保留技术指标# 返回值out_df = pd.DataFrame()  # 初始化输出DataFrame# 生成新特征数据for i in range(n, df.shape[0]):  # 从第n行开始遍历,确保有足够的历史数据# 取n行数据part_df = ft_df.iloc[i - n : i]  # 获取当前行前n天的技术指标数据# 将n行合并为一行new_ft_df = pd.DataFrame(part_df.values.reshape(1, -1))  # 将n行数据展平为一行# 添加到输出DataFrameout_df = out_df.append(new_ft_df)# 重置索引并保存out_df = out_df.reset_index(drop=True)  # 重置索引out_df.to_csv('./baostock/prediction_data_pre/{}.csv'.format(stk_code), index=False)  # 保存处理后的数据return out_df  # 返回处理后的DataFrame# 主程序:批量处理所有股票
stk_code_file = './stk_data/dp_stock_list.csv'  # 定义股票代码文件路径
stk_list = pd.read_csv(stk_code_file)['code'].tolist()  # 读取股票代码列表for stk_code in stk_list:  # 遍历所有股票# 判断是否已经经过预处理(文件是否存在)data_file = './baostock/prediction_data_pre/{}.csv'.format(stk_code)  # 定义预处理后的数据文件路径if not os.path.exists(data_file):  # 检查文件是否已存在print('processing {} ...'.format(stk_code))  # 打印正在处理的股票代码# 读取数据并限制时间范围df = pd.read_csv('./baostock/data_ext/{}.csv'.format(stk_code))  # 读取扩展后的股票数据df = df[df['date'] <= '2020-06-30']  # 仅保留2020年6月30日前的数据# 选择指定日期后的数据index_list = df[df['date'] > '2017-12-31'].index.tolist()  # 获取2017年后数据的索引# 确保有足够的数据if len(index_list) == 0 or min(index_list) < FEATURE_N:  # 检查数据是否足够continue  # 数据不足则跳过当前股票# 截取包含完整FEATURE_N天的数据df = df[min(index_list) - FEATURE_N:]  # 从最早的有效索引向前取FEATURE_N天的数据# 执行数据预处理df = data_preprocessing(df, stk_code, FEATURE_N)  # 调用预处理函数

http://www.lqws.cn/news/527473.html

相关文章:

  • 前端项目3-01:登录页面
  • 实测推荐:一款能看4K直播的万能播放器,支持多端同步
  • 全面比较帮你确定何时选择SLM而非LLM
  • C# .NET Framework 中的高效 MQTT 消息传递
  • React HOC(高阶组件-补充篇)
  • Django 零基础起步:开发你的网站第一步
  • IDE如何快速切换JLINK版本
  • Redis 持久化
  • Axure版AntDesign 元件库-免费版
  • 广州华锐互动:技术与创意双驱动的 VR 先锋​
  • Python 中的 random 模块
  • 49-有效的字母异位词
  • 设计模式精讲 Day 14:命令模式(Command Pattern)
  • Web基础关键_001_HTML(一)
  • docker环境下java参数传递与获取
  • FANUC机器人教程:用户坐标系标定及其使用方法
  • 学习永无止境
  • 程序的更新总结
  • 简易服务器(TCP)
  • 川翔云电脑全新上线:三维行业高效云端算力新选择
  • Kotlin环境搭建与基础语法入门
  • 鸿蒙边缘智能计算架构实战:多线程图像采集与高可靠缓冲设计
  • MIT 6.S081—环境配置和初步学习day01(VMware和Ubuntu安装)
  • Go 语言中的接口
  • 黑马ReactDay02
  • 《告别一换就崩:前端游戏物理引擎适配层设计哲学》
  • Vue样式绑定与条件渲染详
  • C++新纪元:深入C++11/14/17/20核心特性与名企面试精粹(完整版)--8000字硬核解析 | 腾讯/阿里/字节真题实战
  • 数据分享:交通数据-地铁乘坐站记录数据
  • 随记:WebMvcConfigurationSupport 和WebMvcConfigurer 的区别