训练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,得到了解决。

 

posted @ 2022-04-07 18:59  做个读书人  阅读(2176)  评论(0编辑  收藏  举报