You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从OHLCV股票数据创建兼容GluonTS与HuggingFace的DatasetDict

把OHLCV股票CSV转成适配HuggingFace时序Transformer的DatasetDict

直接上可落地的步骤和代码,满足你“每个交易日对应一个数据集条目”的要求:

步骤1:预处理原始数据

先把CSV里的日期列转成标准时间格式,同时给股票加静态类别标记(单只股票固定值即可,多只股票需做类别编码):

import pandas as pd
from datasets import Dataset, DatasetDict

# 加载你的股票数据CSV
df = pd.read_csv("你的股票数据文件.csv")
# 转换日期列为datetime格式,确保时序模型能识别
df["timestamp"] = pd.to_datetime(df["Date"])
# 静态特征:单只股票固定为0,多只股票可改用 df["股票代码"].astype("category").cat.codes 做编码
df["stock_id"] = 0

步骤2:生成单交易日样本的数据集

把每个交易日的OHLCV数据映射成时序模型要求的标准字段:

# 构建数据集:target设为你要预测的列(比如收盘价),feat_dynamic_real放其他动态特征
dataset = Dataset.from_pandas(
    df[["timestamp", "Close", "Open", "High", "Low", "Volume", "stock_id"]],
    features={
        "timestamp": "timestamp",  # 时间戳字段
        "target": "Close",         # 预测目标(可改成多列,比如["Open","High","Low","Close"])
        "feat_dynamic_real": ["Open", "High", "Low", "Volume"],  # 当日动态特征
        "feat_static_cat": "stock_id"  # 静态类别特征
    }
)

步骤3:拆分并封装成DatasetDict

按时间顺序拆分训练/验证/测试集(绝对不能打乱,防止数据泄露):

# 先拆训练集和测试集(8:2比例)
train_test = dataset.train_test_split(test_size=0.2, shuffle=False)
# 再把测试集拆成验证集和测试集(1:1比例)
valid_test = train_test["test"].train_test_split(test_size=0.5, shuffle=False)

# 组合成要求的DatasetDict结构
final_dataset = DatasetDict({
    "train": train_test["train"],
    "validation": valid_test["train"],
    "test": valid_test["test"]
})

# 查看结果,和你目标格式一致
print(final_dataset)

额外说明

  • 如果要做多变量预测(同时预测OHLCV全部字段),把target改成["Open", "High", "Low", "Close", "Volume"]即可
  • 静态特征feat_static_cat用于区分不同股票,单只股票固定一个整数就好,多只股票记得做类别编码
  • 拆分时必须设置shuffle=False,严格按时间顺序切分,否则模型会接触到未来数据,导致结果无效

内容的提问来源于stack exchange,提问作者Harrison H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:10:46