python - tf.keras.metrics.AUC 是否适用于多类问题?

标签 python python-3.x tensorflow2.0 tf.keras auc

我有一个多类分类问题,我想测量训练和测试数据的 AUC。
tf.keras 已经实现了 AUC 指标(tf.keras.metrics.AUC),但我无法看到这个指标是否可以安全地用于多类问题。甚至,官方网页上的示例“不平衡数据分类”专用于二进制分类问题。
我已经实现了一个预测六个类别的 CNN 模型,具有一个提供所有类别概率的 softmax 层。我使用这个指标如下

self.model.compile(loss='categorical_crossentropy',
                       optimizer=Adam(hp.get("learning_rate")),
                       metrics=['accuracy', AUC()]),
并且代码执行没有任何问题。但是,有时我会看到一些对我来说很奇怪的结果。例如,模型报告的准确度为 0.78333336,AUC 等于 0.97327775,这可能吗?模型可以有低准确率和这么高的 AUC 吗?
我想知道,虽然代码没有给出任何错误,但 AUC 指标计算错误。
有人可能会向我确认此指标是否支持多类分类问题?

最佳答案

有争论 multi_label这是您的 tf.keras.metrics.AUC 中的 bool 值称呼。

True (不是默认值),多标签数据将被如此处理,因此为每个标签单独计算 AUC,然后跨标签取平均值。

False (默认),在 AUC 计算之前,数据将被展平为单个标签。在后一种情况下,当多标签数据传递给 AUC 时,每个标签-预测对都被视为一个单独的数据点。

文档建议将其设置为 False用于多类数据。

例如:tf.keras.metrics.AUC(multi_label = True)
AUC Documentation更多细节。

关于python - tf.keras.metrics.AUC 是否适用于多类问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630393/

相关文章:

python - 在不使用集合的情况下,在嵌套的 for 循环中对 dict 和 list 中的项目进行成员资格检查?

python - 从 JSON 创建层次结构路径

Python Discord Bot - 调用函数时将消息发布到特定 channel

python - “elif”在 'while' 循环内不起作用

python - sendLine 中的扭曲类型错误

python - 在 tf.keras 中正确设置 GAN 实现中的 .trainable 变量

python-3.x - Keras 'set_session' 不适用于 Tensorflow 2.0

tensorflow2.0 - TensorFlow 2.0 : Save and load a model that contains a LSTM layer,,而负载通用失败并出现 ValueError

python - 有效使用 ttk (tk 8.5) Notebook 小部件(选项卡滚动)

c++ - Mac OS X 上的 Boost.Python : "TypeError: Attribute name must be string"