问题描述
我正在使用lifelines
软件包在Python上运行Cox PH模型。
我感到奇怪的是,如果我对整个数据运行模型,则运行它没有问题,但是当我执行交叉验证(使用程序包自己的验证功能)时,会出现收敛错误。
有什么办法可以解决这个问题吗? documentation建议使用惩罚器,但我还没有找到让我运行的东西的值。
如果您想知道,这是我的代码:
# Gone right
cph = CoxPHFitter()
cph.fit(daten,"length_of_arrears2",event_col='cured2')
# Gone wrong
cph = CoxPHFitter(penalizer=10)
scores = k_fold_cross_validation(cph,daten,'length_of_arrears2',event_col='cured2',k=5)
这是它输出的错误:
ConvergenceError: Convergence halted due to matrix inversion problems. Suspicion is high collinearity. Please see the following tips in the lifelines documentation: https://lifelines.readthedocs.io/en/latest/Examples.html#problems-with-convergence-in-the-cox-proportional-hazard-modelMatrix is singular.
我检查了相关表,并且某些变量之间具有相当的相关性,但是对我来说有点奇怪,它可以在全部内容上使用,但不能在交叉值上使用。
有没有一种很好的方法来消除高相关性而又不完全删除变量?
编辑:
我对此做了一些测试。首先,我删除了所有相关系数超过0.74的变量,这些变量在KFold方法上无效。
然后,我手动将数据拆分为90/10,它可以工作,所以我一直尝试到70/30,因为60/40尚不可用。 有想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)