Paddlets时间序列集成模型回测实战:MLPRegressor、NHiTSModel与RNNBlockRegressor

news/2024/9/28 6:29:07/

好的,我们继续深入理解代码的每个部分。以下是每个主要模块的详细解释:

1. 导入模块和库

import json
import os
import glob
import pandas as pd
from tqdm import tqdm
from paddlets.datasets import TSDataset
from paddlets.transform import StandardScaler
from paddlets.models.forecasting import MLPRegressor, NHiTSModel, RNNBlockRegressor
from paddlets.ensemble import WeightingEnsembleForecaster
import ray
  • json: 用于处理JSON文件。
  • os: 用于处理文件和目录操作。
  • glob: 用于获取匹配特定模式的文件路径。
  • pandas: 用于数据处理和分析,尤其是表格数据。
  • tqdm: 用于显示进度条,帮助跟踪循环的进度。
  • paddlets: 时间序列预测相关的库。
  • ray: 用于并行计算的库。

2. 定义和创建目录

dirs = ["forecasting_all_result_center","pic_forecasting_center","model_forecasting_center_2048_a_b_5_100","best_forecasting_param_center"
]for dir_name in dirs:os.makedirs(dir_name, exist_ok=True)
  • dirs: 定义了多个用于存储不同类型结果的目录。
  • os.makedirs: 创建目录,如果目录已存在,则不报错。

3. 加载股票映射

with open("./stock_mapping.json", "r") as f:stock_mapping = json.load(f)
  • stock_mapping.json文件中加载股票的映射关系,以便后续使用。

4. 加载CSV数据

csv_paths = glob.glob(os.path.join("./tu_share_data_day", "*.csv"))
sum_dam_data = []for csv_path in tqdm(csv_paths):new_data = pd.read_csv(csv_path)if len(new_data) < 2048 or new_data.iloc[0, 2] < 5 or new_data.iloc[0, 2] > 100:continuenew_data = new_data[::-1].iloc[:2048]new_data['index_new'] = range(1, len(new_data) + 1)sum_dam_data.append(new_data)
  • 使用glob获取所有CSV文件路径,并遍历每个文件。
  • 读取数据并进行过滤,确保符合条件(如数据长度、价格区间)。
  • 将数据反转并取最后2048条,添加索引列。

5. 构建时间序列数据集

dam_data = pd.concat(sum_dam_data)dataset = TSDataset.load_from_dataframe(dam_data,group_id='ts_code',time_col="index_new",target_cols=['high', 'low']
)
  • 将所有符合条件的数据合并成一个DataFrame。
  • 使用TSDataset将数据转换为时间序列格式,指定分组、时间列和目标列。

6. 初始化标准化器

scaler = StandardScaler().fit(dataset)
dataset = scaler.transform(dataset)
  • 使用StandardScaler对数据进行标准化处理,使模型训练更加稳定。

7. 初始化Ray进行并行计算

ray.init()
  • 初始化Ray,使得后续的计算能够并行执行。

8. 定义并行处理函数

@ray.remote
def process_csv_file(csv_path, scaler):...
  • 使用@ray.remote装饰器定义一个可以被Ray并行化的函数,处理每个CSV文件的逻辑。

9. 设置模型参数和加载模型

nhits_params = {'sampling_stride': 24, 'eval_metrics': ["mse", "mae"], 'batch_size': 32, 'max_epochs': 100, 'patience': 10}
rnn_params = nhits_params.copy()
mlp_params = nhits_params.copy()
mlp_params['use_bn'] =

http://www.ppmy.cn/news/1531464.html

相关文章

推荐3个AI论文、AI查重、AI降重工具

什么是AI论文、AI查重、AI降重工具&#xff1f; AI论文 AI论文指的是以人工智能&#xff08;AI&#xff09;相关主题为研究对象的学术论文。这类论文通常包含以下内容&#xff1a; 研究问题&#xff1a;针对某个特定的AI问题或领域的研究。方法&#xff1a;介绍用于解决问题…

嵌入式的核心能力-Debug调试能力(一)

一、栈回溯 引入&#xff1a;调试程序时&#xff0c;经常会发生这类错误&#xff1a; 读写某个地址&#xff0c;程序报错&#xff1b;调用某个空函数&#xff0c;导致程序报错等等。 解决方法是&#xff0c;可以利用异常处理函数去打印出“发生错误瞬间”的所有寄存器地址 …

828华为云征文|部署漫画杂志媒体服务器 Komga

828华为云征文&#xff5c;部署漫画杂志媒体服务器 Komga 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 Komga3.1 Komga 介绍3.2 Komga 部署3.3 Komga 使用 四、总结 一、…

获取交易软件【热度排行数据】2024年9月26日,一股淡淡的牛味

2024年9月26日&#xff0c;一股淡淡的牛味 概念热度的排行榜和行业热度排行榜。 像是这种类型的数据&#xff0c;能不能加到我们的量化模型里面&#xff0c;作为选股和下单指令的判断条件之一呢&#xff1f; 下面图片&#xff0c;有很多数据接口&#xff0c;可以1对1帮助您解…

【解密 Kotlin 扩展函数】扩展函数的导入和使用(十七)

导读大纲 1.1.1 将 joinToString 函数作为 String 类型的扩展函数1.1.2 导入和使用扩展函数 1.1.1 将 joinToString 函数作为 String 类型的扩展函数 在之前的教程中, 我们已经基本实现 joinToString 函数 自定义joinToString 函数–传送门<1> 将原本第一个参数collecti…

【资源一号04A卫星(中巴地球资源卫星04A星)】

资源一号04A卫星&#xff08;中巴地球资源卫星04A星&#xff09; 资源一号04A卫星&#xff0c;全称为中巴地球资源卫星04A星&#xff08;CBERS-04A&#xff09;&#xff0c;是中国与巴西两国合作研制的第六颗地球资源卫星。以下是对该卫星的详细介绍&#xff1a; 一、基本信…

从0-1搭建海外社媒矩阵,详细方案深度拆解

做买卖&#xff0c;好的产品质量固然是关键&#xff0c;但如何让更多的消费者知道&#xff1f;营销推广是必不可少的。在互联网时代&#xff0c;通过社交媒体推广已经成为跨境电商卖家常用的广告手段。 如何通过海外社交媒体矩阵扩大品牌影响力&#xff0c;实现营销目标&#…

Kafka技术详解[1]:简介与基础概念

目录 1. Kafka入门 1.1 概述 1.1.1 初识Kafka 1.1.2 消息队列 1.1.3 生产者-消费者模式 1.1.4 消息中间件对比 1.1.5 ZooKeeper 1. Kafka入门 1.1 概述 1.1.1 初识Kafka Kafka是由Scala和Java语言开发的高吞吐量分布式消息发布和订阅系统&#xff0c;也是大数据技术领…