【问题标题】:I want to calculate Precision, Recall and Accuracy in a dataset我想计算数据集中的精度、召回率和准确率
【发布时间】:2020-02-25 10:46:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: python prediction precision-recall


    【解决方案1】:

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

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

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

    精度/召回率对于多类数据有点棘手 - 您可以按标签执行此操作,但这里肯定没有足够的数据。对于这种情况,我会坚持准确...

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

    【讨论】:

    • 这只是数据的一个例子,它相当广泛,有40个类。我想同时计算召回率和准确率。此外,如果预测结果中的任何参数 P1-P5 与任何参数匹配,我正在考虑正确分类,即参数的顺序无关紧要。
    • 如果是这种情况,请编辑您的问题以明确说明您的分类指标是什么。另外,请显示您的示例的预期结果。这些是问题的标准要求。
    • 我已经提到我正在使用正确分类的参数数量,我不确定如何计算召回率、精度和准确率。
    • 所以如果我理解正确的话,你的问题不是“如何进行计算的代码”,而是“如何定义指标”?
    • 两者兼而有之。
    猜你喜欢
    • 2015-12-05
    • 2017-06-21
    • 2012-11-26
    • 2016-06-19
    • 2017-11-13
    • 2018-08-13
    • 1970-01-01
    • 2015-06-30
    • 2016-01-09
    相关资源
    最近更新 更多