我用以下几行训练我的生存模型:
wft = WeibullAFTFitter()
wft.fit(train, 'duration', event_col='y')
在此之后,我希望查看当前时间的生存概率(duration
列)。
如果使用以下 for 循环,我目前正在这样做的方式:
p_surv = np.zeros(len(test))
for i in range(len(p_surv)):
row = test.iloc[i:i+1].drop(dep_var, axis=1)
t = test.iloc[i:i+1, col_num]
p_surv[i] = wft.predict_survival_function(row, t).values[0][0]
但是,考虑到我使用 for 循环(200k+ 行),这真的很慢。另一种方法是wft.predict_survival_function(test, test['duration'])
创建一个 200000x200000 矩阵,因为它会根据所有提供的时间检查每一行。
我只是想根据自己的持续时间检查生存概率。有lifelines
没有这样做的功能?