#python #statsmodels #poisson
Вопрос:
Я пытаюсь обучить модель для прогнозирования футбольного результата и использую модели состояния, регрессию Пуассона glm. Код выглядит так:
import statsmodels.formula.api as smf
declared_inj_time_model = smf.glm(formula="team1_goals ~ competition_name referee team1_name team2_name", data=df_train, family=sm.families.Poisson()).fit()
declared_inj_time_model.summary()
При выполнении кода появляется следующая ошибка:
/usr/local/lib/python3.7/dist-packages/statsmodels/genmod/families/links.py:521: RuntimeWarning: overflow encountered in exp
return np.exp(z)
/usr/local/lib/python3.7/dist-packages/statsmodels/genmod/families/family.py:428: RuntimeWarning: invalid value encountered in true_divide
endog_mu = self._clean(endog / mu)
/usr/local/lib/python3.7/dist-packages/statsmodels/genmod/families/family.py:134: RuntimeWarning: invalid value encountered in multiply
return 1. / (self.link.deriv(mu)**2 * self.variance(mu))
/usr/local/lib/python3.7/dist-packages/statsmodels/genmod/families/family.py:134: RuntimeWarning: divide by zero encountered in true_divide
return 1. / (self.link.deriv(mu)**2 * self.variance(mu))
/usr/local/lib/python3.7/dist-packages/statsmodels/genmod/generalized_linear_model.py:1163: RuntimeWarning: invalid value encountered in multiply
- self._offset_exposure)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-28-4a8de44e0149> in <module>()
----> 1 declared_inj_time_model = smf.glm(formula="team1_goals ~ competition_name referee team1_name team2_name", data=df_train, family=sm.families.Poisson()).fit()
2 declared_inj_time_model.summary()
3
2 frames
/usr/local/lib/python3.7/dist-packages/statsmodels/regression/_tools.py in __init__(self, endog, exog, weights, check_endog, check_weights)
46 if check_weights:
47 if not np.all(np.isfinite(w_half)):
---> 48 raise ValueError(self.msg.format('weights'))
49
50 if check_endog:
ValueError: NaN, inf or invalid value detected in weights, estimation infeasible.
Все NAN удаляются из набора данных. Что я могу сделать?
Код, используемый для точного выполнения и прогнозирования целей, но просто перестал работать. Кроме того, этот код предназначен для прогнозирования целей в первом тайме, я написал точно то же самое, только для второго тайма, и это по-прежнему выполняется идеально.
Комментарии:
1. проверьте, есть ли у вас значения NA или отрицательные значения? Трудно устранить неполадки, если вы не предоставляете данные
2. Они удаляются