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

运行logistic回归出现ValueError报错的解决方法咨询

报错原因说明

这个ValueError的核心原因是你传入逻辑回归模型的因变量MEDVBIN不符合输入要求:要么是取值为非数值类型(比如字符串、布尔值),要么是切片取数时返回了二维结构的DataFrame而非一维的Series,导致被模型识别为多列数据。

具体解决方案

步骤1:先定位问题

运行以下代码查看因变量的类型和维度:

# 查看MEDVBIN列的数据类型
print(df['MEDVBIN'].dtype)
# 查看MEDVBIN列的结构
print(df['MEDVBIN'].shape)

如果输出的类型是object/bool,或者维度输出为(506, 1)/(506, 2),就对应匹配下方的修复方案。

步骤2:对应问题修复

  • 如果是数据类型异常:
    将MEDVBIN转换为数值型,二分类场景确保列的取值只有0和1:
# 转换为整数类型,布尔值会自动转为0/1,数值型字符串也会转成对应整数
df['MEDVBIN'] = df['MEDVBIN'].astype(int)

转换前可先确认列内无异常字符或缺失值,避免转换报错。

  • 如果是取数维度异常:
    取因变量时不要用双中括号切片,双中括号返回的是二维DataFrame,改为单中括号取一维Series即可:
# 错误写法,返回二维结构
y = df[['MEDVBIN']]
# 正确写法,返回一维结构
y = df['MEDVBIN']

步骤3:重新运行模型

修复后再运行逻辑回归代码即可,示例如下(以statsmodels为例):

import statsmodels.api as sm

# 取自变量
X = df[['CRIM', 'RM', 'NOX', 'DIS', 'AGE']]
# 若需要截距项则加这行
X = sm.add_constant(X)
# 取处理好的因变量
y = df['MEDVBIN']

# 训练模型
logit_model = sm.Logit(y, X).fit()
# 输出结果
print(logit_model.summary())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:30:02