【问题标题】:keras:: How to find the class-wise accuracy?keras:: 如何找到分类准确度?
【发布时间】:2020-08-01 08:36:13
【问题描述】:

我有一个data-set 包含两种类型的对象。让我们说"cat""dog"。我想在 Keras 中找到class-wise 的准确性。这就是我所做的;

from sklearn.metrics import classification_report
import numpy as np
Y_test = np.argmax(y_val, axis=1) # Convert one-hot to index
y_pred = model.predict_classes(x_val)
print(classification_report(Y_test, y_pred))

我得到了这样的输出;

从这个输出(01)我怎么知道哪个属于cat,哪个属于dog

【问题讨论】:

    标签: python-3.x tensorflow keras conv-neural-network precision-recall


    【解决方案1】:

    准确率可以在整体模型级别而不是类级别计算,而精度,召回可以在类级别计算。

    要计算准确度,您可以使用以下函数

    keras.metrics.accuracy(y_true, y_pred)
    

    您可以将target_names 参数添加到您的classification_report,如下所示以了解标签。

    target_names = ["Class {}".format(i) for i in range(num_classes)]
    print(classification_report(Y_test, y_pred, target_names=target_names))
    

    还有另一种方法可以打印标签并了解第一个和第二个索引代表什么。这是一个例子

    import numpy as np
    from sklearn.preprocessing import LabelBinarizer
    from tensorflow.keras.utils import to_categorical
    
    # define example
    data = ['dog', 'dog', 'cat', 'dog', 'cat', 'cat', 'dog', 'cat', 'dog', 'dog']
    
    values = np.array(data)
    
    #Binary encode
    lb = LabelBinarizer()
    
    labels = lb.fit_transform(values)
    labels = to_categorical(labels)
    print("which position represents for cat and dog?:")
    print("Data is:",data)
    print(labels)
    

    输出:

    which position represents for cat and dog?:
    Data is: ['dog', 'dog', 'cat', 'dog', 'cat', 'cat', 'dog', 'cat', 'dog', 'dog']
    [[0. 1.]
     [0. 1.]
     [1. 0.]
     [0. 1.]
     [1. 0.]
     [1. 0.]
     [0. 1.]
     [1. 0.]
     [0. 1.]
     [0. 1.]]
    

    从你可以很容易理解的输出中,第一个索引是猫,第二个是狗。

    【讨论】:

      猜你喜欢
      • 2018-10-09
      • 2012-11-14
      • 2020-07-14
      • 2018-08-16
      • 2012-02-14
      • 2020-08-13
      • 2018-10-01
      • 2016-12-03
      • 1970-01-01
      相关资源
      最近更新 更多