You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在statsmodels的Logistic回归中引入不同数据类型会报错?

问题分析与解决

问题原因

当DataFrame中同时包含布尔型(bool)和浮点型(float)列时,pandas会自动将整个DataFrame的 dtype 转为 object,而statsmodels的Logit模型要求输入数据为数值型数组(如float或int),无法直接处理object类型的数据,因此触发类型转换错误。

解决方案

将布尔型列转换为整数型或浮点型即可解决问题,具体有两种常见方式:

方式1:单独转换布尔列

在构建模型前,把DataFrame中的布尔列转为int(True→1,False→0):

import pandas as pd
import statsmodels.api as sm

X = pd.DataFrame([[True, 12.3], [False, 14.2], [True, 18.0]])
# 将布尔列(第0列)转为整数型
X[0] = X[0].astype(int)
y = pd.Series([0, 1, 0])

log_reg = sm.Logit(y, X).fit()
log_reg.summary()

方式2:整体转换DataFrame为浮点型

直接将整个DataFrame转为float类型,布尔值会自动转为1.0和0.0:

import pandas as pd
import statsmodels.api as sm

X = pd.DataFrame([[True, 12.3], [False, 14.2], [True, 18.0]])
# 整体转为浮点型
X = X.astype(float)
y = pd.Series([0, 1, 0])

log_reg = sm.Logit(y, X).fit()
log_reg.summary()

验证效果

修改后两种方式都能正常拟合逻辑回归模型并输出摘要信息,不会再触发ValueError。

内容的提问来源于stack exchange,提问作者RogerKint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:27:36