如何为numpy.ndarray类型的模型预测值高效应用FNR阈值
Numpy高效实现二分类阈值映射方案
核心实现代码
直接使用numpy原生向量化运算即可,全程无Python层面循环,性能最优:
import numpy as np # 定义给定的FNR阈值 fnr_threshold = 0.21552509277542697 # 一行代码完成分类规则映射 y_class = (y_pred[:, 1] > fnr_threshold).astype(np.int32)
逻辑说明
y_pred[:, 1]:提取二维数组所有行的第二列元素,也就是类别1的预测概率,直接得到一维数组- 比较运算
> fnr_threshold:返回和上述一维数组长度相同的布尔数组,类别1概率大于阈值的位置为True,否则为False astype(np.int32):将布尔数组直接转换为整数类型,True自动映射为1,False自动映射为0,完全匹配需求的判断规则
示例验证
用你提供的测试数据运行后,输出的y_class结果和预期完全一致:
array([1, 1, 0, 1, 0, 0, 1, 0, 1, 1])
性能优势
该方案完全基于numpy底层C实现的向量化运算,处理百万级样本也仅需毫秒级耗时,效率远高于手写Python循环的实现方式。
内容的提问来源于stack exchange,提问作者Alex Nikitin
相关产品推荐
相关产品推荐

