python系列31:MLforecast入门

参考这里:https://nixtlaverse.nixtla.io/mlforecast/docs/getting-started/end_to_end_walkthrough.html

1. 测试数据

可以从这里下载数据:https://www.kaggle.com/code/lemuz90/m4-competition
读取测试数据的代码为:

import random
import tempfile
from pathlib import Path
import pandas as pd
from datasetsforecast.m4 import M4
from utilsforecast.plotting import plot_series
await M4.async_download('data', group='Hourly')
df, *_ = M4.load('data', 'Hourly')
uids = df['unique_id'].unique()
random.seed(0)
sample_uids = random.choices(uids, k=4)
df = df[df['unique_id'].isin(sample_uids)].reset_index(drop=True)
df['ds'] = df['ds'].astype('int64')
fig = plot_series(df, max_insample_length=24 * 14)

数据为:
在这里插入图片描述
绘图为:
在这里插入图片描述

2. 去除季节性/日期性波动:target_transforms

比如说下面的代码,就是将每行数据减去前面第24行,得到的新数据(注意要增加freq字段):

from mlforecast import MLForecast
from mlforecast.target_transforms import Differences
fcst = MLForecast(
    models=[],  # we're not interested in modeling yet
    freq=1,  # our series have integer timestamps, so we'll just add 1 in every timestep
    target_transforms=[Differences([24])],
)
prep = fcst.preprocess(df)
prep

在这里插入图片描述

3. 增加features

3.1 lags:进行平移得到新的特征

在这里插入图片描述

3.2 Lag transforms:移动平均得到新的特征

在这里插入图片描述

3.3 Date features: 日期字段转化为特征

在这里插入图片描述

3.4 其他target_transforms

target_transforms会在生成features之前进行计算,这里补充一个LocalStandardScaler,对数据进行了标准化:
在这里插入图片描述

4. 进行预测

在这里插入图片描述
新增数据可以用下面的方法:
在这里插入图片描述

5. 交叉验证

时间序列的交叉验证有些特殊,n_windows表示从后向前划出4个窗口作为predict validation数据,每个窗口的size等于step_size. 每个窗口前的所有数据作为training data。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值