我是生存分析的新手。我尝试使用CoxPHFitter
,但遇到此错误。 numpy.linalg.linalg.LinAlgError: Matrix is singular.
遇到此错误后,我知道我的一列中有不可逆矩阵。
那我现在该怎么办?我不能使用该列吗?如果是的话,那篇专栏文章我能得出什么结论?
完整堆栈跟踪:
回溯(最近通话最近): 在第79行的文件“ surv_model.py”中 cph.fit(X,'T',event_col ='label') 适合的文件“ /usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py”,第165行 step_size = step_size) _newton_rhaphson中的第253行的“ /usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py”文件 inv_h_dot_g_T = spsolve(-h,g.T,sym_pos = True) 解决文件“ /usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py”,第251行 _solve_check(n,信息) _solve_check中的文件“ /usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py”,第31行 引发LinAlgError('Matrix is singular。') numpy.linalg.linalg.LinAlgError:矩阵是奇数。
我正在使用python lifelines
答案 0 :(得分:0)
您可以尝试使用矩阵的Moore-Penrose inverse,该矩阵一直存在。但是请注意,在不可逆矩阵的情况下,这仅是最优解的最小二乘方。
重新考虑您的问题,注释是正确的:添加一个正则化参数。这实际上似乎是一个已知问题:https://github.com/sebp/scikit-survival/issues/28#issuecomment-370918386