Метод Каплана-Мейера для интегрированного расчета оценки Бриера в PythonPython

Программы на Python
Ответить
Anonymous
 Метод Каплана-Мейера для интегрированного расчета оценки Бриера в Python

Сообщение Anonymous »

Я выполнил 5-кратную перекрестную проверку, чтобы создать 5-кратную проверку: три для обучающих данных, одну для проверки и одну для тестовых данных. Я хочу применить к этим данным метод Каплана-Мейера.
Я вычислил 10 уникальных временных точек из набора данных:

Код: Выделить всё

def compute_eval_time(args):
local_unique_times = []

for client_id in range(args.n_parties):
train_df, val_df, _, _ = get_local_dataset(args.dataset, args.partition, client_id, args.run_id)
train_time, _ = train_df["time"], train_df["event"]

val_time, _ = val_df["time"], val_df["event"]
local_unique_times.append(np.unique(np.concatenate([train_time, val_time])))

glob_unique_time=np.unique(np.concatenate(local_unique_times))
pseudo_evaltime=np.percentile(glob_unique_time, np.arange(args.pseudo_perc_interval, 99, args.pseudo_perc_interval))
return pseudo_evaltime
Теперь я хочу обучить метод Каплана-Мейера, используя мои данные обучения и проверки, а затем хочу оценить обученный метод КМ, используя мои тестовые данные. Для этого я использую Kaplan-Meier Fitter из пакета Python Lifelines.

Код: Выделить всё

def train_net_all(net_id, train_time_all, train_status_all, val_time_all, val_status_all,  test_time_all, test_status_all, evaltime, args, device):

logger.info('Training network %s' % str(net_id))
print('Training network %s' % str(net_id))

train_val_time = np.concatenate((train_time_all, val_time_all))
train_val_status = np.concatenate((train_status_all, val_status_all))

kmf = KaplanMeierFitter(label="waltons_data")
kmf.fit(train_val_time, train_val_status)

test_survival_probabilities = kmf.survival_function_at_times(test_time_all)
ev1 = EvalSurv(test_survival_probabilities, test_time_all, test_status_all == 1, censor_surv='km')

cindex = 0.5

# Integrated Brier score
try:
brier = float(ev1.integrated_brier_score(evaltime))
except Exception as e:
print(f"[Brier ERROR] {type(e).__name__}: {e}")
brier = 0.25

return cindex, brier
Что вы думаете? Есть ли какая-либо логическая ошибка в моем коде? Пожалуйста, направляйте меня. Любые предложения и отзывы будут высоко оценены.

Подробнее: https://stackoverflow.com/questions/799 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»