Ошибка значения: NaN, inf или недопустимое значение, обнаруженное в весах, оценка невозможна

#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. Они удаляются