首页
学习
活动
专区
圈层
工具
发布

宏微F1
EN

Stack Overflow用户
提问于 2016-06-23 05:28:53
回答 1查看 2.1K关注 0票数 2

我有一个二进制分类问题,由于数据不平衡,我试图计算宏/微F1。我认为这可以使用Sickitlearn完成,但是在检查了文档这里之后,似乎当分类是二进制的时候,计算将只针对正数类。正因为如此,我正试图计算我自己。首先,我使用以下函数计算TP、TN、FP、FN:

代码语言:javascript
复制
def calculate(y_actual, y_pred):
    TP = 0
    FP = 0
    TN = 0
    FN = 0

    for i in range(len(y_pred)): 
        if y_actual[i]==y_pred[i]==1:    # true positive
           TP += 1
    for i in range(len(y_pred)): 
        if y_actual[i]==1 and y_pred[i]==0:   
           FN += 1
    for i in range(len(y_pred)): 
        if y_actual[i]==y_pred[i]==0:    # true negative
           TN += 1
    for i in range(len(y_pred)): 
        if y_actual[i]==0 and y_pred[i]==1:
           FP += 1

    return(TP, FP, TN, FN)

因此,为了计算微/宏F1,我需要分别计算每个类的精确性和召回率(我不知道如何实现!)然后,作为一个例子,可以像下面这样计算F1宏(如果我正确理解它):

代码语言:javascript
复制
F1 for class one: 2(precision*recall)/(precision+recall)
F1 for class two: 2(precision*recall)/(precision+recall)
F1 Macro = (F1 for class one + F1 for class two)/2 

可以找到计算F1Macro&Micro的参考资料这里

那么,是否有一种方法可以分别计算每个类的这些度量(TP/TN/FP/FN &精确和召回),给定上面的函数(计算)?任何帮助都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 07:05:18

你确实可以使用科学知识-学习的常规。如果要在二进制问题上使用指定的平均值,请设置pos_label=None。然而,这些措施并不特别有用。二元或多类问题的微平均F1与普通的老精度是一致的.宏平均召回,也被称为平衡准确性,是流行的,比宏观平均F1更有用的二进制问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37983023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档