При вычислении для датасета, на котором выбирался порог, должен быть точный результат. Для другого датасета это уже не гарантируется. Соответственно, чем больше тестовый датасет похож на обучающий, тем ближе будут результаты.
Вот такой код, вроде просто и ошибиться невозможно, сейчас ещё раз проверю
arr = model.predict_proba(data=X_validation)
print(arr)
# Суммируем предсказание и результат
df1 = pd.DataFrame(arr, columns=['prob0', 'prob1'])
y_validation.reset_index()
df2 = pd.DataFrame(Y_validation)
df_total = pd.merge(df1, df2, left_index=True, right_index=True)