Python 使用numpy计算精度和准确度
假设两个列表Python 使用numpy计算精度和准确度,python,numpy,Python,Numpy,假设两个列表true\u值=[1,0,1,0,0,1,1,0,0,1,1,0]和预测=[1,1,0,1,0,1,1,1,1,0]。如何使用numpy计算精度和精度 如果您真的想自己计算,而不是使用中的库,只需计算(真|假)(正|负)的数量,并将这些值插入公式: tp = 0 tn = 0 fp = 0 fn = 0 for t,p in zip(true_values, predictions): if t == p: if p == 1: tp +=
true\u值=[1,0,1,0,0,1,1,0,0,1,1,0]
和预测=[1,1,0,1,0,1,1,1,1,0]
。如何使用numpy计算精度和精度
如果您真的想自己计算,而不是使用中的库,只需计算(真|假)(正|负)的数量,并将这些值插入公式:
tp = 0
tn = 0
fp = 0
fn = 0
for t,p in zip(true_values, predictions):
if t == p:
if p == 1:
tp += 1
else:
tn += 1
else:
if p == 1:
fn += 1
else:
fp += 1
accuracy = (tp + tn) / (tp + tn + fp + fn)
precision = tp / (tp + fp)
这有一个很好的信息框,其中包含的公式正好使用了这些值。这就是
sklearn
,它在窗帘后面使用numpy
,用于:
from sklearn.metrics import precision_score, accuracy_score
accuracy_score(true_values, predictions), precision_score(true_values, predictions)
输出:
(0.3333333333333333, 0.375)
这是我想出的最简洁的方法(假设没有sklearn),但可能会更短 我只想回答精确性问题,因为我发布了一份精确性问题的副本,每个线程应该有一个问题:
sum(map(lambda x, y: x == y == 1, true_values, predictions))/sum(true_values)
如果您绝对想使用Numpy,请使用np.sum
以下是平均值:
np.equal(true_values, predictions).mean()
@托马斯:不,我在金融领域。事实上,我工作需要它。这能回答你的问题吗@Nicolas Gervais不,我不是在家工作我不能用sklearn。你想让我以更简洁的方式使用numpy吗?虽然这是正确的,但几乎没有人用这种方式计算这些值:)@Quang Hoang:同意:)我发布它主要是为了教育目的。来吧,为了完整起见,也发布准确代码。仅供参考,在这个网站上结束问题的原因是“帖子里有不止一个问题”,我想看看你的答案是否准确。Please@David为确保准确性,请删除分子中的
==1
部分,并用分母中的len
替换sum
。精度=(预测值*真值)。sum()/predictions.sum()
。
0.5
np.equal(true_values, predictions).mean()