Использовать существующий коэффициент и перехват в линейной регрессии - PullRequest
1 голос
/ 04 мая 2020

Я использую scikit-learn модуль для Linear Regression. Моя модель запускается каждый день, теперь я сохраняю переменную модели (coef_ & intercept_) в файл, чтобы ее можно было снова использовать при запуске модели.

Предположим, что за один год я ежедневно работаю с моделью. 25 ноября я сохранил модель coef_ & intercept_ в файле, поэтому я снова перезапускаю свою программу, и она начнется с 25 ноября и будет работать до последнего

Так что, когда я Сравните прогнозы на 26 ноября до и после перезапуска, прогнозы разные. Поэтому я просто подумал об использовании coef_ & intercept_ перед перезапуском, чтобы после перезапуска он предсказал то же самое для 26 ноября.

Для этого я просто перезаписываю coef_ & intercept_

from sklearn import linear_model

model = linear_model.LinearRegression()
model.coef_ = coef_stored
model.intercept_ = intercept_stored

model.fit(X, y)
model.predict(x)

Я хочу, чтобы мои прогнозы на 26-е были такими же, до и после перезапуска. Используя приведенный выше код, я не смог этого добиться.

1 Ответ

1 голос
/ 04 мая 2020

Изменение атрибутов неподготовленной модели не рекомендуется, но, следуя комментарию пустыненавца, вы можете сделать это, как показано в Как создать линейную модель Scikit-Learn с известными коэффициентами без подгонки .

Однако, если вы вызовете метод fit, коэффициент и перехват будут перезаписаны .

from sklearn.linear_model import LinearRegression
import numpy as np
np.random.seed(0)

my_intercepts = np.ones(2)
my_coefficients = np.random.randn(2, 3)

new_model = LinearRegression()
new_model.intercept_ = my_intercepts
new_model.coef_ = my_coefficients

print(new_model.coef_)
#[[ 1.76405235  0.40015721  0.97873798]
# [ 2.2408932   1.86755799 -0.97727788]]


new_model.predict(np.random.randn(5, 3))
#array([[ 2.51441481,  2.94725181],
#       [ 3.20531004,  0.76788778],
#       [ 2.82562532,  2.49886169],
#       [ 1.98568931,  4.73850448],
#       [-1.28821286,  2.60145844]])

Вы сказали:

Так что я просто подумал об использовании coef_ & intercept_ перед перезапуском, чтобы после перезапуска он предсказал то же самое для 26 ноября.

Если вы не получите те же результаты, когда вы убедитесь, что вы используете те же data и model factor , тогда что-то не так. Небольшие различия можно ожидать в sklearn версиях в случае, если вы обновили sklearn между состояниями вашей программы до и после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...