1

我是生存分析的新手。我尝试使用CoxPHFitter,但遇到了这个错误。numpy.linalg.linalg.LinAlgError: Matrix is singular.

在经历了这个错误之后,我知道我的一列有不可逆矩阵。

那我现在该怎么办?我不能用那一栏吗?如果是这样,我可以从该专栏得出什么结论?

完整的堆栈跟踪:

回溯(最后一次调用):文件“surv_model.py”,第 79 行,在 cph.fit(X, 'T', event_col='label') 文件“/usr/local/lib/python2.7/dist- packages/lifelines/fitters/coxph_fitter.py”,第 165 行,适合 step_size=step_size)文件“/usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py”,第 253 行,在_newton_rhaphson inv_h_dot_g_T = spsolve(-h, gT, sym_pos=True) File "/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py",第 251 行,在求解 _solve_check(n, info ) 文件“/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py”,第 31 行,在 _solve_check 中引发 LinAlgError('Matrix is single.') numpy.linalg.linalg.LinAlgError:矩阵是单数的。

我正在使用蟒蛇lifelines

4

1 回答 1

1

您可以尝试使用始终存在的矩阵的Moore-Penrose 逆矩阵。但请注意,在不可逆矩阵的情况下,这只是适合最优解的最小二乘法。

重新考虑您的问题,评论是正确的:添加正则化参数。这实际上似乎是一个已知问题:https ://github.com/sebp/scikit-survival/issues/28#issuecomment-370918386

于 2018-12-04T05:50:53.560 回答