deephit模型如何画校准曲线 代码怎么实现,以下是目前的代码
num_durations = 130 #(最大生存时间/12)
labtrans = DeepHitSingle.label_transform(num_durations)
get_target = lambda df: (df['survival'].values, df['OS'].values)
y_train = labtrans.fit_transform(*get_target(df_train))
y_val = labtrans.transform(*get_target(df_val))
train = (x_train, y_train)
val = (x_val, y_val)
# 获取验证集的真实生存时间和事件状态
durations_val, events_val = get_target(df_val)
durations_test, events_test = get_target(df_test)
in_features = x_train.shape[1]
num_nodes = [32, 64, 32] #可变加层,调整节点数
out_features = labtrans.out_features
batch_norm = True
dropout = 0.5 #调整过拟合情况
net = tt.practical.MLPVanilla(in_features, num_nodes, out_features, batch_norm, dropout)
model = DeepHitSingle(net, tt.optim.AdamW, alpha=0.0001, sigma=0.1, duration_index=labtrans.cuts)
batch_size = 256
lr_finder = model.lr_finder(x_train, y_train, batch_size, tolerance=3)
_ = lr_finder.plot()
lr_finder.get_best_lr()
model.optimizer.set_lr(lr_finder.get_best_lr())
epochs = 400
callbacks = [tt.callbacks.EarlyStopping()]
log = model.fit(x_train, y_train, batch_size, epochs, callbacks, val_data=val)
_ = log.plot()
surv = model.predict_surv_df(x_test)