statsmodel.api.Logit: массив valueerror не должен содержать infs или nans

Я пытаюсь применить логистическую регрессию в Python с помощью statsmodel.api.Logit. Я столкнулся с ошибкой ValueError: массив не должен содержать inf или NaN.

Когда я выполняю:

data['intercept'] = 1.0
train_cols = data.columns[1:]
logit = sm.Logit(data['admit'], data[train_cols])
result = logit.fit(start_params=None, method='bfgs', maxiter=20, full_output=1, disp=1, callback=None)

Данные содержат более 15000 столбцов и 2000 строк. which data ['admit'] - это целевое значение, а data [train_cols] - это список функций. Кто-нибудь может дать мне несколько советов, как решить эту проблему?


person user2806761    schedule 07.10.2013    source источник


Ответы (1)


По умолчанию Logit не проверяет ваши данные на наличие необработанных бесконечностей (np.inf) или NaN (np.nan). В пандах последнее обычно означает отсутствующую запись.

Чтобы игнорировать строки с отсутствующими данными и продолжить работу с остальными, используйте missing='drop' следующим образом:

sm.Logit(data['admit'], data[train_cols], missing='drop')

Дополнительные параметры см. В документации по Logit. .

Если вы не ожидаете, что ваши данные будут содержать какие-либо недостающие записи или бесконечности, возможно, вы загрузили их неправильно. Посмотрите на data[data.isnull()], чтобы увидеть, в чем проблема. (NB Прочтите это, чтобы узнать, как сделать infs регистрируется как null.)

person Dan Allan    schedule 07.10.2013