我正在使用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]
,它再次清楚地表明最少滞后的数据放在返回列表的末尾而不是开头。 最佳答案
就在这里:X[:,-i] = aux
i->越大滞后->与最后一列的距离越大:
i = 1是列-1
i = 6是列-6,因此将是第一个列。
如果您愿意,可以将其更改为X[:, i-1] = aux
。
关于python - sklearn.linear_model LinearRegression模块的系数如何返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52722912/