我正在使用sklearn.linear_model和模块LinearRegression执行一个简单的自回归模型。您可以在下面看到我的代码。训练数据集位于train
中,并且X
包含目标的滞后版本。滞后最少的数据,即滞后为1的数据,位于X的第一列中,最后一列包含的滞后数据最多。
import numpy as np
import sklearn.linear_model as skml
tot_param = 10
X = np.zeros((len(train),tot_param))
for i in range(1,tot_param):
aux = np.roll(train,-i)
aux[-i:] = 0
X[:,-i] = aux
lregr = skml.LinearRegression()
model = lregr.fit(X,train)
因此,我希望model.coef_
中的系数将基于X
的列进行排序,即第一个元素将包含与最少滞后数据有关的系数。如果我用tot_params=1
执行代码,我只会得到一个值为0.97190325
的系数。但是,如果选择tot_params=2
,则会得到model.coef_=[-0.00433893, 0.97612027]
;显然,第二个值(0.97612027
)是指滞后最少的数据。但是为什么呢?我希望得到像model.coef_=[0.97612027, -0.00433893]
这样的输出,并且最不滞后的数据的系数在前面。
tot_params
的其他值也会发生相同的情况。例如,对于tot_params=6
,我得到[ 3.71898345e-02, 5.46416689e-02, -8.65343583e-02, -1.88565771e-03, -6.13451823e-04, 9.72547863e-01]
,它再次清楚地表明最少滞后的数据放在返回列表的末尾而不是开头。
答案 0 :(得分:1)
就在这里:X[:,-i] = aux
i->越大,滞后越大->与最后一列的距离越大:
i = 1是列-1
i = 6是-6列,因此它将是第一个列。
反之,将其更改为X[:, i-1] = aux
。