Как извлечь параметр перехвата из Python Pygam.LinearGAM - PullRequest
0 голосов
/ 27 февраля 2019

Я ищу для извлечения подогнанного параметра из подгонки модели с пигамом.Вот воспроизводимый пример.

from pygam import LinearGAM, s, f
from pygam.datasets import wage
X, y = wage()
gam = LinearGAM(s(0) + s(1) + f(2)).fit(X, y)

Вот несколько вещей, которые я пробовал.

#gam.summary() ## This does not show it.
#gam.intercept_ ## This does not exit.
#gam.terms.info ## This does not contain it.
#gam.partial_dependence(-1) ## This raises an error.

Вот соответствующая проблема GitHub, которая, как кажется, не реализована: https://github.com/dswah/pyGAM/issues/85

1 Ответ

0 голосов
/ 27 февраля 2019

TL; DR

  • По умолчанию сохраняется перехват как последний из коэффициентов и может быть извлечен с помощью gam.coef_[-1].
  • Атрибут terms может быть напечатан для проверкиэто поведение.
  • Вы можете быть более точным, импортировав pygam.intercept и включив его в свою формулу (например, gam = LinearGAM(intercept + s(0) + s(1) + f(2)).fit(X, y))

Поведение и термины по умолчанию

По умолчанию сохраняется перехват как последний из коэффициентов и может быть извлечен с помощью gam.coef_[-1].Чтобы убедиться в этом, напечатайте атрибут terms.

from pygam import LinearGAM, s, f
from pygam.datasets import wage
X, y = wage()
gam = LinearGAM(s(0) + s(1) + f(2)).fit(X, y)
print(gam.terms)
# s(0) + s(1) + f(2) + intercept
print(gam.coef_[-1])
# 96.31496573750117

Явное объявление перехвата

Хорошей идеей будет явное включение перехвата в формулу, чтобы вы не полагались наПерехватывать является последним элементом коэффициентов.

from pygam import intercept
gam = LinearGAM(intercept + s(0) + s(1) + f(2)).fit(X, y)
print(gam.terms)
# intercept + s(0) + s(1) + f(2)
print(gam.coef_[0])
# 96.31499924945388
...