我想在keras中实现一个自定义指标来计算回忆,假设前k%最有可能的1
是真的。
在y_pred_probs
我会这样做。对y_preds_probs进行排序。然后取numpy
索引处的值。注意k
会给出中值。
k=0.5
来自Keras custom decision threshold for precision and recall的答案非常接近但是假设已经知道决定哪个kth_pos = int(k * len(y_pred_probs))
threshold = np.sort(y_pred_probs)[::-1][kth_pos]
y_pred = np.asarray([1 if i >= threshold else 0 for i in y_pred_probs])
被假为真的阈值。我希望结合这些方法,并在可能的情况下根据Keras后端的y_pred
和k
找到threshold_value。
y_pred
答案 0 :(得分:2)
感谢您引用我之前的回答。
在这种情况下,如果您使用张量流后端,我建议您使用此tensorflow function:
tf.nn.in_top_k(
predictions,
targets,
k,
name=None
)
它输出一个bool的张量,如果答案属于top k,则输出1,如果答案不属于top k,则输出0。
如果您需要更多信息,我已经链接了tensorflow文档。我希望它有所帮助。 :-)