我想在数据集中计算精度,召回率和准确性

时间:2019-10-30 07:15:24

标签: python prediction precision-recall

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

一种算法最多可预测Predicted中的五个唯一的预定义参数。假设参数是从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

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

1 个答案:

答案 0 :(得分:0)

要在这里计算准确性,您只需计算预测参数与实际参数匹配的出现次数,而忽略它们均为None的情况。 有很多方法可以做到这一点,我会选择以下简单的方法:

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

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

精度/调用对于多类数据来说有些棘手-您可以按标签进行操作,但是这里肯定没有足够的数据。在这种情况下,我会坚持准确...

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