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

如何用Python的Nixtla NeuralForecast建模不含目标变量输入的多变量时间序列

解决方案:用Nixtla工具链构建无目标输入的多变量预测模型

一、数据准备

先整理符合Nixtla库要求的数据格式,单序列场景需添加固定unique_id标识:

import numpy as np
import pandas as pd
from neuralforecast import NeuralForecast
from neuralforecast.models import PatchTST, NeuralProphet

# 生成示例数据
feature1 = np.sin(np.linspace(0, 2*np.pi, 100))
feature2 = np.cos(np.linspace(0, 2*np.pi, 100))
target = feature1 + feature2

# 构建DataFrame
data = pd.DataFrame({
    'unique_id': ['series_1'] * 100,
    'ds': np.arange(100),
    'y': target,
    'feature1': feature1,
    'feature2': feature2
})

二、配置NeuralProphet:完全禁用目标历史输入

默认NeuralProphet会使用目标变量y的历史值建模,需通过设置n_lags=0完全关闭自回归项,只保留外部特征作为输入:

# 初始化模型,禁用目标历史滞后输入
np_model = NeuralProphet(
    n_lags=0,  # 核心设置:不使用目标变量的历史值
    n_forecasts=1,  # 单步预测,可按需调整
    freq='L'
)

# 添加外部特征作为预测输入
np_model.add_future_regressor(name='feature1')
np_model.add_future_regressor(name='feature2')

三、配置PatchTST:仅用外部特征建模

通过covariates_cols明确指定输入特征,让模型仅学习特征历史与目标的映射关系:

ptst_model = PatchTST(
    h=1,  # 预测步长
    input_size=10,  # 输入的特征历史窗口长度,可按需调整
    freq='L',
    target_cols=['y'],
    covariates_cols=['feature1', 'feature2']  # 指定仅使用这两个特征作为输入
)

四、模型训练与效果对比

用NeuralForecast统一管理模型,训练后输出预测结果并计算误差指标:

# 初始化模型管理器
nf = NeuralForecast(
    models=[np_model, ptst_model],
    freq='L'
)

# 训练模型
nf.fit(df=data)

# 生成预测
predictions = nf.predict(df=data)

# 查看预测结果
print(predictions[['ds', 'y', 'NeuralProphet', 'PatchTST']])

# 计算MAE对比效果
from sklearn.metrics import mean_absolute_error
mae_np = mean_absolute_error(predictions['y'], predictions['NeuralProphet'])
mae_ptst = mean_absolute_error(predictions['y'], predictions['PatchTST'])
print(f"NeuralProphet MAE: {mae_np:.4f}")
print(f"PatchTST MAE: {mae_ptst:.4f}")

关键注意点

  • NeuralProphet的n_lags=0是核心,确保模型完全不依赖目标变量的历史值;
  • PatchTST通过covariates_cols锁定输入特征,避免模型隐式使用目标历史;
  • 多步预测场景需确保特征的未来值可获取(如本例的周期特征),否则需额外处理特征预测问题。

内容的提问来源于stack exchange,提问作者Felix Hohnstein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:34:57