偷拍 自拍 【python量化】多种Transformer模子用于股价计算(Autoformer, FEDformer和PatchTST等)

发布日期:2024-10-29 11:05    点击次数:169


偷拍 自拍 【python量化】多种Transformer模子用于股价计算(Autoformer, FEDformer和PatchTST等)

图片

图片

写在前边

在本文中,咱们诓骗Nixtla的NeuralForecast框架,收场多种基于Transformer的时序计算模子,包括:Transformer, Informer, Autoformer, FEDformer和PatchTST模子,况兼收场将它们应用于股票价钱计算的浅易例子。

NeuralForecast

neuralforecast 是一个旨在为时间序列计算提供一个丰富的、高度可用和鲁棒的神经收集模子辘集的器用库。这个库集成了从传统的多层感知器(MLP)和递归神经收集(RNN)到最新的模子如N-BEATS、N-HiTS、TFT,以偏激他高等架构,以妥当各种化的计算需求。它的要津功能包括对静态、历史和过去的外生变量的相沿,提高了模子在本体应用中的活泼性。库中的模子提供了高超的计算可证明性,允许用户绘制趋势、季节性以及外生计算组件。neuralforecast 还收场了概率计算,通过浅易的适配器相沿量化损成仇参数散布,加多了计算后果的置信度。此外,它提供了自动模子选拔功能,通过并行自动超参数调养来高效细目最优的模子成立。库的精真金不怕火接口计算与SKLearn兼容,确保了易用性,况兼考验和评估亏损的揣度有时妥当不同的比例,这为不同限度的数据集提供了活泼性。终末,neuralforecast 包含了一个平常的模子辘集,包括但不限于LSTM、RNN、TCN、N-BEATS、N-HiTS、ESRNN以及各式基于Transformer的计算模子等,王人所以即插即用的情势收场,便捷用户平直应用于各式时间序列计算场景。这些特色使得neuralforecast 成为那些寻求高效、精准且可证明时间序列计算模子的商榷东谈主员和实际者的有劲器用。本文将诓骗neuralforecast 收场各式Transformer模子,并展示将它们应用于股票价钱计算的浅易例子。

情欲九歌十大禁片

环境成立

土产货环境:

Python 3.8
IDE:Pycharm

库版块:

Pandas version: 2.0.3
Matplotlib version: 3.7.1
Neuralforecast version: 1.6.4

为了使用最新的其他模子,也不错平直fork neuralforecast的源码:

git clone https://github.com/Nixtla/neuralforecast.git
cd neuralforecast
pip install -e .

代码收场

法子 1: 导入所需的库导入库:领先,导入科罚数据所需的 pandas 库,画图所需的 matplotlib.pyplot 库,以及 neuralforecast 中的多个模块。这些模块包括各式计算模子和评估议论函数。

import pandas as pd
from neuralforecast.models import VanillaTransformer, Informer, Autoformer, FEDformer, PatchTST
from neuralforecast.core import NeuralForecast
import matplotlib.pyplot as plt
from neuralforecast.losses.numpy import mae, rmse, mse

法子 2: 数据准备读取数据:使用 pandas从 CSV 文献加载数据。这个数据集包含股票的逐日收盘价。

数据预科罚:重定名列以得当模子的输入条款(举例,将日历列重定名为 'ds',将收盘价列重定名为 'y')。此外,将日历列调度为日历时间形势,萝莉 胜利女神:nikke并为数据集添加一个惟一标志符,这关于使用neuralforecast进行时间序列计算是必要的。

df = pd.read_csv('./000001_Daily_Close.csv')
df['unique_id'] = 1
df = df.rename(columns={'date': 'ds', 'Close': 'y'})
df['ds'] = pd.to_datetime(df['ds'])

法子 3: 界说计算模子运行化模子:界说一个模子列表,每个模子王人是 neuralforecast 库中的一个类的实例。关于每个模子,指定计算范围(horizon)、输入窗口大小(input_size)以偏激他考验参数(如 max_steps, val_check_steps)。

模子成立:这些参数决定了模子的考验情势,包括考验捏续时间、评估频率和早停机制等。每个模子王人有一些大众的参数以及它们自己的参数不错调养,这里均使用它们默许的参数进行模子运行化。

models = [VanillaTransformer(h=horizon,
                             input_size=input_size,
                             max_steps=train_steps,
                             val_check_steps=check_steps,
                             early_stop_patience_steps=3,
                             scaler_type='standard'),
          Informer(h=horizon,  # Forecasting horizon
                   input_size=input_size,  # Input size
                   max_steps=train_steps,  # Number of training iterations
                   val_check_steps=check_steps,  # Compute validation loss every 100 steps
                   early_stop_patience_steps=3,  # Number of validation iterations before early stopping
                   scaler_type='standard'),  # Stop training if validation loss does not improve
          FEDformer(h=horizon,
                     input_size=input_size,
                     max_steps=train_steps,
                     val_check_steps=check_steps,
                     early_stop_patience_steps=3),
          Autoformer(h=horizon,
                     input_size=input_size,
                     max_steps=train_steps,
                     val_check_steps=check_steps,
                     early_stop_patience_steps=3),
          PatchTST(h=horizon,
                   input_size=input_size,
                   max_steps=train_steps,
                   val_check_steps=check_steps,
                   early_stop_patience_steps=3),
          ]

法子 4: 模子考验与交叉考据创建 NeuralForecast 实例:使用 NeuralForecast 类整合悉数的模子。这个类提供了一个调和的接口来考验和评估多个模子。

施行交叉考据:使用 cross_validation 挨次对每个模子进行考验和评估。这个挨次自动进行时间序列的交叉考据,分割数据集并评估模子在不同技艺窗口上的性能。

nf = NeuralForecast(
    models=models,
    freq='B')
 
 
Y_hat_df = nf.cross_validation(df=df,
                               val_size=100,
                               test_size=100,
                               n_windows=None)

法子 5: 数据筛选筛选数据点:通过选拔特定的“cutoff”点来过滤 Y_hat_df 中的计算。这种筛选基于计算范围 horizon,确保评估是在均匀拒绝的时间点上进行。

Y_plot = Y_hat_df
cutoffs = Y_hat_df['cutoff'].unique()[::horizon]
Y_plot = Y_plot[Y_hat_df['cutoff'].isin(cutoffs)]

法子 6: 画图与性能评估绘制计算后果:使用 matplotlib 绘制真正数据与每个模子的计算后果。这有助于直不雅地相比不同模子的计算准确性。

揣度评估议论:对每个模子,揣度和打印均方根差错(RMSE)、平均齐备差错(MAE)和均方差错(MSE)等性能议论。这些议论提供了量化模子性能的情势。

plt.figure(figsize=(20, 5))
plt.plot(Y_plot['ds'], Y_plot['y'], label='True')
for model in models:
    plt.plot(Y_plot['ds'], Y_plot[model], label=model)
    rmse_value = rmse(Y_hat_df['y'], Y_hat_df[model])
    mae_value = mae(Y_hat_df['y'], Y_hat_df[model])
    mse_value = mse(Y_hat_df['y'], Y_hat_df[model])
    print(f'{model}: rmse {rmse_value:.4f} mae {mae_value:.4f} mse {mse_value:.4f}')
 
 
plt.xlabel('Datestamp')
plt.ylabel('Close')
plt.grid()
plt.legend()
plt.show()

法子 7: 后果展示展示图表:终末,流露绘制的图表。图表展示了不同模子在通盘时间序列上的计算证实,允许直不雅地评估和相比模子。

图片

图片

VanillaTransformer: rmse 56.5187 mae 38.8573 mse 3194.3650
Informer: rmse 52.2324 mae 39.1110 mse 2728.2239
FEDformer: rmse 48.9400 mae 35.9884 mse 2395.1237
Autoformer: rmse 58.5010 mae 45.7157 mse 3422.3614
PatchTST: rmse 48.5870 mae 36.1392 mse 2360.6968

在对比基于 Transformer 的各式模子在股票价钱计算任务上的证及时,从可视化以及评估后果中,咱们发现 FEDformer 和 PatchTST 在悉数评估议论(RMSE、MAE、MSE)上证实最为出色,这可能归因于它们在科罚弥远依赖干系和拿获时间序列数据中的复杂模式方面的上风。相较之下,天然 Informer 流露了合理的性能,但其证实略逊于 FEDformer 和 PatchTST。VanillaTransformer 和 Autoformer 的性能相对较差。这些后果强调了凭证特定任务的需求选拔合适的模子架构的蹙迫性,同期也标明了在本体应用中进行模子选拔时需要探究到模子的特定上风和潜在的局限性。

回来

本文展示了若何使用 neuralforecast 收场多种 Transformer 模子(包括 Informer, Autoformer, FEDformer 和 PatchTST),并将它们应用于股票价钱计算的浅易示例。通过这个演示,咱们不错看到 Transformer 模子在科罚时间序列数据方面的后劲和活泼性。天然咱们的实验是初步的,但它为进一步的商榷和应用提供了一个基础。读者不错在此基础上进行更深化的模子调优、特征工程和超参数实验,以升迁计算性能。此外,这些模子的应用不限于股票价钱计算,还不错彭胀到其他边界的时间序列分析。

版权声明:本文为博主原创著作,解任 CC 4.0 BY-SA 版权条约,转载请附上原文出处结伙和本声明vb.net教程C#教程python教程。

原文结伙:https://blog.csdn.net/FrankieHello/article/details/135190192偷拍 自拍

本站仅提供存储作事,悉数内容均由用户发布,如发现存害或侵权内容,请点击举报。


Powered by 推特反差 @2013-2022 RSS地图 HTML地图

Copyright Powered by365建站 © 2013-2024