Как возвращаются коэффициенты модуля sklearn.linear_model LinearRegression - PullRequest
0 голосов
/ 09 октября 2018

Я выполняю простую модель авторегрессии, используя 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], что еще раз ясно указывает на то, что данные с наименьшей задержкой помещаются в конец, а не в начало возвращаемого списка.

1 Ответ

0 голосов
/ 09 октября 2018

Все правильно: X[:,-i] = aux

Чем больше я -> чем больше лаг -> тем больше расстояние от последнего столбца:
i = 1 - столбец -1
i= 6 - это столбец -6, поэтому он будет первым.

Измените его на X[:, i-1] = aux, если вы предпочитаете его наоборот.

...