在使用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,得到了解決。