You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MLR3中70/30数据拆分下DeepSurv训练报错求助

DeepSurv模型70/30数据拆分报错排查

原80/20训练测试数据拆分时代码运行正常,改为70/30拆分后,DeepSurv模型出现如下报错,但DeepHit、CoxTime等其他深度生存模型在两种拆分方式下均能正常运行。

报错信息:
Error in check_prediction_data.PredictionDataSurv(pdata, train_task = task) :
Assertion on 'pdata$crank' failed: Contains missing values (element 1).

数据样例

df <- data.frame(
  AGE = c(75.6, 78.9, 63.9),
  PTGENDER = c(2, 1, 1),
  PTEDUCAT = c(16, 16, 18),
  PTETHCAT = c(2, 2, 2),
  PTRACCAT = c(4, 4, 1),
  PTMARRY = c(2, 2, 2),
  CDRSB.bl = c(0, 0.5, 0),
  ADAS11.bl = c(11, 3, 4),
  ADAS13.bl = c(16, 4, 6),
  ADASQ4.bl = c(5, 1, 2),
  MMSE.bl = c(27, 29, 30),
  RAVLT.immediate.bl = c(30, 50, 66),
  RAVLT.learning.bl = c(2, 10, 8),
  RAVLT.forgetting.bl = c(4, 4, 1),
  RAVLT.perc.forgetting.bl = c(57.14286, 26.66667, 6.666667),
  LDELTOTAL.bl = c(14, 13, 13),
  FAQ.bl = c(1, 0, 1),
  Comorbidity_Alcohol.Abuse = c(0, 0, 1),
  Comorbidity_Allergies.or.Drug.Sensitivities = c(1, 1, 1),
  Comorbidity_Cardiovascular = c(1, 0, 0),
  Comorbidity_Dermatologic.Connective.Tissue = c(1, 1, 1),
  Comorbidity_Drug.Abuse = c(0, 0, 0),
  Comorbidity_Renal.Genitourinary = c(1, 1, 2),
  Comorbidity_Respiratory = c(0, 0, 0),
  Comorbidity_Smoking = c(0, 0, 0),
  time = c(72, 24, 24),
  status = c(0, 0, 0)
)

MLR3代码

task = TaskSurv$new("data",
                    backend = alldata, 
                    time = "time",
                    event = "status")
task$set_col_roles("status", c("target", "stratum"))
split = partition(task, ratio = 0.7, stratify = TRUE)

#define learners
lrn_deepsurv = lrn("surv.deepsurv",
                   dropout = to_tune(0,1),
                   optimizer = to_tune(c("adadelta")),
                   lr = to_tune(0,1)
                   )
lrn_deephit = lrn("surv.deephit",
                   dropout = to_tune(0,1),
                   optimizer = to_tune(c("adadelta")),
                   lr = to_tune(0,1)
                   )

#Hyperparameter tuning
at_deepsurv = auto_tuner(
tuner = tuner,
learner = lrn_deepsurv,
resampling = rsmp("cv", folds = 5),
measure = msr("surv.cindex"),
terminator = trm("evals", n_evals = 100, k = 0)
)
rr_deepsurv = resample(task, at_deepsurv, resampling_outer, store_models = FALSE)
#Save model
lrn_deepsurv_tuned = at_deepsurv
saveRDS(lrn_deepsurv_tuned, "lrn_deepsurv_tuned.rds")

###########################################
at_deephit = auto_tuner(
tuner = tuner,
learner = lrn_deephit,
resampling = rsmp("cv", folds = 5),
measure = msr("surv.cindex"),
terminator = trm("evals", n_evals = 100, k = 0)
)
rr_deephit = resample(task, at_deephit, resampling_outer, store_models = FALSE)
#Save model
lrn_deephit_tuned = at_deephit
saveRDS(lrn_deephit_tuned, "lrn_deephit_tuned.rds")

###############################################


#Training and testing 
lrn_deepsurv_tuned <- readRDS('lrn_deepsurv_tuned.rds')
lrn_deepsurv_tuned$train(task, split$train)
predictiontrain_deepsurv = lrn_deepsurv_tuned$predict(task, split$train)
prediction_deepsurv = lrn_deepsurv_tuned$predict(task, split$test)

lrn_deephit_tuned <- readRDS('lrn_deephit_tuned.rds')
#lrn_deephit_tuned = at_deephit
lrn_deephit_tuned$train(task, split$train)
predictiontrain_deephit = lrn_deephit_tuned$predict(task, split$train)
prediction_deephit = lrn_deephit_tuned$predict(task, split$test)

恳请帮忙排查报错原因及代码修改方向。

内容的提问来源于stack exchange,提问作者Ferial Hantash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 04:32:07