我需要测量我的模型对二元分类(0 和 1 输出)的预测准确度。我正在用许多不同的阈值测试我的模型,我的测试数据集非常大(5000 万到 1 亿个示例),所以我需要一种快速的方法来计算模型的准确度。我正在优化我的代码,并注意到计算准确度的标准函数比直接计算慢约 50 倍。最小示例:
from sklearn.metrics import accuracy_score
import numpy as np
import timeit
a=np.random.randint(0,2,1000000)
b=np.random.randint(0,2,1000000)
%timeit accuracy_score(a,b)
# 46.7 ms ± 390 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit (a==b).sum()/a.size
# 713 µs ± 7.22 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
我是不是漏掉了什么?看起来 accuracy_score 是衡量准确度的标准方法。为什么它这么慢?底层没有 C 优化?