训练logisttic回归时报错:numpy.linalg.LinAlgError: Singular matrix
在使用statsmodel中的logistic回归,调用fit时报错:numpy.linalg.LinAlgError: Singular matrix
检查日志发现:在报错附近有这样一行:statsmodel.logit Maximum number of iterations has been exceeded.
模型超过了最大迭代次数。查找得到的解决方案有:
第一种解决办法:
默认的优化方法是newton,源码种给出了method的几种参数的表示,几种优化方法的区别这篇文章讲的很详细:https://www.cnblogs.com/yymn/p/4512868.html
按照该方案解决后是没有再报错,但是得到的模型conf明显不对。
第二种解决思路:
优化难题:通常Logit收敛速度很快,默认迭代次数设置得很低。在对fit
的调用中添加一个更大的maxiter
关键字,或者用前面的结果重新调整为start_params
在大多数情况下都有帮助。
定位到出现问题的自变量和因变量的地方,发现大部分的迭代都在10-15次之后达到收敛,但是这组迭代达到了35次,
于是添加参数maxiter=25,得到了解决。
唯有热爱方能抵御岁月漫长。