指导 tensorflow keras 模型训练,实现二元分类的最佳 Recall At Precision 0.95

原文标题Guiding tensorflow keras model training to achieve best Recall At Precision 0.95 for binary classification

我希望能在这个主题上得到一些帮助。我有一个包含两种相似病理的患者的医学数据数据库,一种是严重的,一种是更轻的。我需要标记大多数前者(≥95%)并省略后者尽可能多。

因此,我想创建一个反映这一点的二进制分类器。在网上四处寻找(不是专家)我将这段代码放在一起,将我找到的指标替换为代码中间部分的 RecallAtPrecision(0.95)。下面是一个精简版:

import tensorflow as tf

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(10, input_dim=x_train.shape[1], activation='relu', kernel_initializer='he_normal'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))

model.compile(optimizer='adam', loss=tf.keras.losses.BinaryCrossentropy(), metrics=[tf.keras.metrics.RecallAtPrecision(0.95)])

history = model.fit(x_train, y_train, validation_split=0.33, batch_size=16, epochs=EPOCHS)

但是,它根本不起作用,因为它会引发以下错误:

AttributeError:模块“tensorflow_core.keras.metrics”没有属性“RecallAtPrecision”

我不知道为什么会发生这种情况,因为我可以在文档中清楚地看到它。如果我使用 Recall()、Precision() 或大多数其他指标,代码就可以工作。再环顾四周,我开始认为我是缺少一些基本的东西。你们中的任何一位女士和先生们对如何解决这个问题有任何指示吗?

原文链接:https://stackoverflow.com//questions/71909901/guiding-tensorflow-keras-model-training-to-achieve-best-recall-at-precision-0-95

回复

我来回复
  • Ali zendehbad的头像
    Ali zendehbad 评论

    要计算准确率和召回率,您不需要 Keras。如果您将实际值和期望值作为 0/1 的向量,则可以使用tf.count_nonzero计算 TP、FP、FN,您可以轻松地表示它们。

    TP = tf.count_nonzero(predicted * actual)
    FP = tf.count_nonzero(predicted * (actual - 1))
    FN = tf.count_nonzero((predicted - 1) * actual)
    

    您的指标现在很容易计算:

    precision = TP / (TP + FP)
    recall = TP / (TP + FN)
    
    2年前 0条评论