我正在尝试使用 statsmodel.api.Logit 在 Python 中应用逻辑回归。 我遇到了错误 ValueError:数组不得包含 infs 或 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 行。 其中 data['admit'] 是目标值,data[train_cols] 是特征列表。 任何人都可以给我一些提示来解决这个问题吗?
最佳答案
默认情况下,Logit
不会检查数据中是否存在不可处理的无穷大 (np.inf
) 或 NaN (np.nan
) 。在 pandas 中,后者通常表示缺少条目。
要忽略缺少数据的行并继续处理其余部分,请使用 missing='drop'
,如下所示:
sm.Logit(data['admit'], data[train_cols], missing='drop')
请参阅Logit docs其他选项。
如果您不希望数据包含任何缺失的条目或无穷大,则可能您加载的方式不正确。查看data[data.isnull()]
看看问题出在哪里。 (注意 Read this 查看如何使 infs 注册为 null。)
关于python - statsmodel.api.Logit : valueerror array must not contain infs or nans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19223408/