///|
fn main {
let rows = [
@iso.sample(0.1, 0.0),
@iso.sample(0.4, 1.0),
@iso.sample(0.6, 0.0),
@iso.sample(0.9, 1.0),
@iso.sample(0.2, 0.0),
@iso.sample(0.8, 1.0),
]
let result = @iso.holdout(rows, [0, 1, 2, 3], [4, 5]).unwrap()
let comparison = @iso.compare_calibration(rows, result, bin_count=5).unwrap()
guard result.predictions.length() == 2 else { panic() }
guard result.predictions[0] <= result.predictions[1] else { panic() }
guard comparison.before.brier >= 0.0 && comparison.after.brier >= 0.0 else {
panic()
}
let portable = @iso.decode_model(@iso.encode_model(result.model).unwrap()).unwrap()
guard @iso.predict_many(portable, [0.2, 0.8]).unwrap() == result.predictions else {
panic()
}
println(
"probability: disjoint holdout, reliability and JSON assertions passed",
)
}