我如何在图书馆pmdarima中使用pipeline.fit()使用外源变量



我当前正在使用库pmdarima构建Arimax模型:

pmdarima.pipeline.Pipeline.fit(y, exogenous=None, **fit_kwargs)

描述了参数:

外源:类似阵列,shape = [n_obs,n_vars],可选(默认= none(

外源变量的可选2-D阵列。如果提供,这些变量将用作回归操作中的其他功能。这不应包括恒定或趋势。请注意,如果Arima适合外源特征,则必须为其提供预测的外源特征。

,但我不明白这种格式的含义: shape=[n_obs, n_vars]

n_obsn_vars是什么意思?

为什么我们需要这种格式而不是时间序列格式的外源变量?

泰勒·史密斯先生给我发送了一封电子邮件:

外源变量或协变量,作为大多数ML算法的二维矩阵表示,我确定您知道。沿行轴是观测值,沿圆柱轴是变量或特征向量(因此n_samples X n_features(。您询问的惯例是Numpy和Scikit-Learn在表示类似数组的对象形状中使用的(例如,请参见Scikit-Learn's Lasso上的文档(。shape=[n_obs, n_vars]只是指沿列沿行和变量的样品的二维矩阵。

关于您为什么不能使用时间序列的问题...您的y变量应该是时间序列(实际上只是一个矢量或1-D数组(,因为这就是您要从。那是唯一需要的数据。外源变量纯粹是可选的补充数据。

我正在寻找这个问题 - 这是我如何使其与外源变量一起使用。使用model.summary((验证模型中的外源变量。

# result_df is the main df
# predicts next 12 months after 24 months of training
i_split = 24
model_input = 'arima'
target = 'target_var'
exogenous = 'exogenous_var'
y_train = result_df.loc[0:i_split, [target]+[exogenous]]
y_test = result_df.loc[i_split+1:36, [target]+[exogenous]]
if model_input == 'arima_auto':
    model = pm.auto_arima(y_train,seasonal=False,m=12,stepwise=True,trace=True,start_p=0,start_q=0,start_P=0,start_Q=0,max_p=2,max_q=2,maxiter=50000,with_intercept=True,trend='ct')
elif model_input == 'arima':
    model = pm.arima.ARIMA(order=(1,0,1),seasonal=False,m=12,stepwise=True,trace=True,maxiter=6000,with_intercept=True,trend='ct')
# Train on x_train, y_train
model.fit(y_train['target'],X=pd.DataFrame(y_train['exogenous']))
# Predict on x_test
preds = model.predict(n_periods=12,X=pd.DataFrame(y_test['exogenous']))

最新更新