训练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 @   做个读书人  阅读(2218)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-04-07 Hive启动后show tables报错:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
点击右上角即可分享
微信分享提示