чтобы использовать модель statsmodels Пуассона GLM в контексте sklearn, я пытаюсь создать собственную модель, которая наследуется от GLM, BaseEstimator и RegressorMixin. Моя цель - делать такие вещи, как перекрестная проверка. Это мой код:
import statsmodels.api as sm
from sklearn.base import BaseEstimator, RegressorMixin
class GLM_sklearn(sm.GLM, BaseEstimator, RegressorMixin):
def __init__(self, X, y, family=sm.families.Poisson()):
super().__init__(y, X, family=family)
def fit(self, **kwargs):
self.results_ = super().fit()
self.coef_ = self.results_.params.values
self.bse_ = self.results_.bse.values
return self
def predict(self, X, **kwargs):
return self.results_.predict(X)
Метод подгонки работает нормально, но у меня проблема с переопределением pred (). Чтобы предсказать, мне нужен прогнозируемый метод экземпляра результатов (GLMResultsWrapper). Поэтому я хочу переопределить метод GLM.predict (у которого есть еще одна функция). Как я пытался в коде, я получаю ожидаемую ошибку:
pred_results = self.model.predict (self.params, exog, * args, ** kwargs) TypeError: pred () принимает 2 позиционных аргумента, но было дано 3
Есть ли возможность «полностью» переопределить метод прогноза?
predict_results = self.model.predict(self.params, exog, *args, **kwargs)
- ›predict_results = self.model.predict(self.params, exog, **kwargs)
. Функция прогнозирования, как вы определили, требует X и kwargs, но вы пытались передать больше информации на сайте вызова - person Ivan   schedule 21.11.2017