一、问题描述
搭建逻辑回归模型时报错,模型代码如下:
import statsmodels.api as sm
formula = "y ~ x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19"
model = sm.Logit.from_formula(formula, data = train_data)
报错情况如下:
二、具体原因
ValueError错误是指输入函数的值错误,可能是参数出错。
报错提示信息的大致意思为:endog的值可能有多个值,造成这个的原因可能是endog是非数值型数据,endog是指因变量,所以可能是建模时的因变量的值不是数值型,因此解决思路是将非数值型的强制转换为数值型即可。
三、解决问题
“y ~ x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19”里的变量都是在train_data数据集里的,因此使用train_data.info()查看train_data数据集的相关信息,结果如下
因此需要将变量y从object型转换为float64型,再次查看结果如下
train_data.y=np.array(train_data.y,dtype=np.float) #转换类型
train_data.info() #查看信息
再次运行逻辑回归模型的代码就不会报错啦~~~
nice(✿◠ ‿ ◠)