2

我正在尝试使用 statsmodel.api.Logit 在 Python 中应用逻辑回归。我遇到了错误 ValueError: array must not contain infs or NaNs。

当我执行时:

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 行。其中 data['admit'] 是目标值, data[train_cols] 是特征列表。谁能给我一些提示来解决这个问题?

4

1 回答 1

3

默认情况下,Logit不会检查您的数据是否存在不可处理的无穷大 ( np.inf) 或 NaN ( np.nan)。在 pandas 中,后者通常表示缺少条目。

要忽略缺少数据的行并继续其余部分,请missing='drop'像这样使用:

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

有关其他选项,请参阅Logit 文档

如果您不希望您的数据包含任何丢失的条目或无穷大,则可能是您错误地加载了它。看看data[data.isnull()]问题出在哪里。(注意阅读本文以了解如何使 infs 注册为空。)

于 2013-10-07T12:08:00.873 回答