这段代码是为了并行地处理多个 CSV 文件,并使用机器学习模型进行预测和回测。主要涉及以下步骤:
-
初始化环境与设置:
- 引入必要的库,如
ray
用于并行计算,pandas
用于数据处理,tqdm
用于进度条显示等。 - 设置一些路径,用于保存结果、图像、模型等。
- 定义一些处理特征、数据预处理的函数。
- 引入必要的库,如
-
并行处理函数
csv_predict
:- 使用
ray.remote
将csv_predict
函数并行化。 - 在每个函数中,加载训练好的模型,并对新的 CSV 文件进行预测和回测。
- 使用
-
具体步骤:
- 读取 CSV 文件:读取并处理每个 CSV 文件,确保数据格式正确。
- 数据预处理:包括特征计算、标准化等。
- 构建验证数据集:将处理后的数据转换为模型可接受的格式。
- 预测与回测:使用模型对数据进行预测,并根据预测结果进行回测计算,模拟交易策略。
-
结果保存:
- 根据回测结果,将交易数据保存到不同的文件夹中。
- 以不同的策略和条件,将结果分门别类保存。
代码解读
import ray
# 验证集数据处理
a = []
sum_dam_data = []
# 定义并行处理函数
@ray.remote
def csv_predict(csv_path):
# 创建和训练模型参数
nhits_params = {
'sampling_stride': 8,
'eval_metrics': ["mse", "mae"],
'batch_size': 32,
'max_epochs': 100,
'patience': 10
}
rnn_params = {
'sampling_stride': 8,
'eval_metrics': ["mse", "mae"],
'batch_size': 32,
'max_epochs': 100,
'patience': 10,
}
mlp_params = {
'sampling_stride': 8,
'eval_metrics': ["mse", "mae"],
'batch_size': 32,
'max_epochs': 100,
'patience': 10,
'use_bn': True,
}
# 加载训练好的加权集成预测模型
reg = WeightingEnsembleForecaster(
in_chunk_len=64,
out_chunk_len=1,
skip_chunk_len=0,
estimators=[(NHiTSModel, nhits_params), (RNNBlockRegressor, rnn_params), (MLPRegressor, mlp_params)]
)
reg = reg