按 Split Conformal 分类流程:先在校准集上算非一致性分数并取阈值 q,再对测试概率构造预测集并映射整数。
制度问答检索侧在上线前,需要对二分类召回结果做置信集输出:模型不确定时允许拒识,以换取更稳的覆盖率。本题在仅使用 numpy / pandas / scikit-learn 的前提下,实现 Split Conformal(分类版)的确定性预测集构造,并将预测集映射为整数标签。
已知:
请按以下流程计算:
1) 非一致性分数
对校准集第 i 个样本,pi=cal_p1[i]:
2) 计算阈值 q
固定显著性水平 α=0.2(目标覆盖率约 80%)。
令校准集大小为 n,将 si 升序排序得 s(0)≤⋯≤s(n−1)。
k=⌈(n+1)⋅(1−α)⌉−1若 k≥n,令 k=n−1。阈值 q=s(k)。
3) 构造预测集 Γ(x)
对测试样本概率 p=test_p1[t]:
4) 映射为整数
标准输入为单行 JSON:
{
"cal_y": [0, 1, 0, ...],
"cal_p1": [0.12, 0.83, 0.05, ...],
"test_p1": [0.20, 0.70, 0.95, ...]
}
cal_y 与 cal_p1 长度相同,校准集长度 n,3≤n≤19;cal_p1、test_p1 均为 [0,1] 内浮点数;test_p1 长度 m,2≤m≤19。标准输出仅一行:长度等于 len(test_p1) 的 JSON 整数数组,例如 [0, -1, 1]。
输入
{"cal_y":[0,0,1,1,0,1,0,1],"cal_p1":[0.08,0.12,0.88,0.92,0.25,0.85,0.15,0.78],"test_p1":[0.0,1.0,0.5,0.18,0.82]}
输出
[0, 1, -2, 0, 1]
说明
校准集 n=8,α=0.2,k=⌈9×0.8⌉−1=7,排序后取 q=0.25。测试 0.0≤q 得 0;1.0≥0.75 得 1;0.5 两端均不满足得 −2;0.18≤q 得 0;0.82≥0.75 得 1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册