我在谷歌上搜索过,但没有找到如何在Keras中将Sklearn的指标(如Cohen Kappa、ROC、F1分数)作为不平衡数据的评估指标实现的方法。
如何在Keras中实现Sklearn指标作为评估指标?
回答:
Keras和Sklearn中的指标含义不同。
在Keras中,指标几乎与损失函数相同。它们在训练过程中会在每个批次和每个周期结束时被调用,用于报告和记录目的。例如,你可以使用’mse’作为损失函数,但你可能还想查看’mae’。在这种情况下,你可以将’mae’作为评估指标添加到模型中。
在Sklearn中,指标函数是根据预测结果应用的,定义为“指标模块实现了用于特定目的评估预测误差的函数”。虽然有一定的重叠,但Sklearn的统计函数并不符合Keras中指标的定义。Sklearn的指标可以返回浮点数、数组、二维数组(两个维度都大于1)。在Keras中,预测方法没有这样的对象。
回答你的问题:
这取决于你想在哪里触发:
- 每个批次或每个周期结束时
你可以编写一个自定义回调函数,在批次结束时触发。 - 预测之后
这似乎更简单。让Keras对整个数据集进行预测,捕获结果,然后将y_true和y_pred数组输入到相应的Sklearn指标中。