生存分析中如何处理不可逆矩阵
How to deal with non invertible matrix in survival analysis
我是生存分析的新手。我尝试使用 CoxPHFitter
,但我遇到了这个错误。 numpy.linalg.linalg.LinAlgError: Matrix is singular.
经历这个错误后,我才知道我的一个专栏有一个不可逆矩阵。
那我现在该怎么办?我不能使用该列吗?如果是,我可以从该专栏得出什么结论?
完整堆栈跟踪:
Traceback (most recent call last):
File "surv_model.py", line 79, in
cph.fit(X, 'T', event_col='label')
File "/usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py", line 165, in fit
step_size=step_size)
File "/usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py", line 253, in _newton_rhaphson
inv_h_dot_g_T = spsolve(-h, g.T, sym_pos=True)
File "/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py", line 251, in solve
_solve_check(n, info)
File "/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py", line 31, in _solve_check
raise LinAlgError('Matrix is singular.')
numpy.linalg.linalg.LinAlgError: Matrix is singular.
我正在使用 python lifelines
您可以尝试使用矩阵的 Moore-Penrose inverse,它始终存在。但请注意,在不可逆矩阵的情况下,这只是对最优解的最小二乘拟合。
重新思考你的问题,评论是正确的:添加一个正则化参数。这实际上似乎是一个已知问题:https://github.com/sebp/scikit-survival/issues/28#issuecomment-370918386
我是生存分析的新手。我尝试使用 CoxPHFitter
,但我遇到了这个错误。 numpy.linalg.linalg.LinAlgError: Matrix is singular.
经历这个错误后,我才知道我的一个专栏有一个不可逆矩阵。
那我现在该怎么办?我不能使用该列吗?如果是,我可以从该专栏得出什么结论?
完整堆栈跟踪:
Traceback (most recent call last): File "surv_model.py", line 79, in cph.fit(X, 'T', event_col='label') File "/usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py", line 165, in fit step_size=step_size) File "/usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py", line 253, in _newton_rhaphson inv_h_dot_g_T = spsolve(-h, g.T, sym_pos=True) File "/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py", line 251, in solve _solve_check(n, info) File "/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py", line 31, in _solve_check raise LinAlgError('Matrix is singular.') numpy.linalg.linalg.LinAlgError: Matrix is singular.
我正在使用 python lifelines
您可以尝试使用矩阵的 Moore-Penrose inverse,它始终存在。但请注意,在不可逆矩阵的情况下,这只是对最优解的最小二乘拟合。
重新思考你的问题,评论是正确的:添加一个正则化参数。这实际上似乎是一个已知问题:https://github.com/sebp/scikit-survival/issues/28#issuecomment-370918386