繁体   English   中英

我想计算数据集中的精度、召回率和准确率

[英]I want to calculate Precision, Recall and Accuracy in a dataset

我有两组数据:预测数据和实际数据。

算法最多可以预测预测中的五个唯一预定义参数。 假设参数是从 a 到 z 的字母。 因此,对于一行,我看到这些参数中有多少是正确预测的。

Predicted:

Index P1 P2 P3 P4 P5

1     a  b  c  q

2     g

3     s  f  g  v  t


Actual:

Index P1 P2 P3 P4 P5

1     a  s  q  r  t  

2     g

3     t  v

生成这些数据帧的代码:

import pandas as pd

predicted = pd.DataFrame.from_records(columns =['P'+str(i) for i in range(1,6)],
                                      data=[['a','b','c','q'],['g'], ['s','f','g','v','t']])


actual = pd.DataFrame.from_records(columns =['P'+str(i) for i in range(1,6)],
                                      data=[['a','s','q','r','t'],['g'], ['t','v']])
For Row1: Correctly predicted parameters: a,q
For Row2: Correctly predicted parameters: g
For Row3: Correctly predicted parameters: t,v

我如何计算相同的精度、召回率和准确率?

要计算此处的准确性,您只需计算预测参数与实际参数匹配的出现次数,忽略它们都是None的情况。 有很多方法可以做到这一点,我会采取这个简单的选择:

accuracy = ((predicted==actual) & (predicted.notna() | actual.notna())).sum().sum() / (predicted.notna() | actual.notna()).sum().sum()

您可以验证它是否符合所需的结果 (2/11)。

对于多类数据,精度/召回率有点棘手——你可以按照 label 来做,但这里肯定没有足够的数据。 对于这种情况,我会坚持准确性...

PS我假设您的准确性计算非常简单。 如果不是 - 应该在您的问题中明确指定...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM