尝试谷歌搜索,但无法找到如何在keras中实现像科恩卡帕,roc,f1score这样的Sklearn指标作为不平衡数据的指标。
如何在Keras中将Sklearn Metric实现为度量标准?
答案 0 :(得分:5)
Keras和Sklearn中的指标意味着不同的东西。
在Keras中,指标几乎与损失相同。它们在每个批次结束时的训练期间被调用,并且每个时期用于报告和记录目的。使用示例是有损失' mse'但你仍然希望看到' mae'。在这种情况下,您可以添加' mae'作为模型的指标。
在Sklearn中,度量函数根据定义应用于预测"度量模块实现了为特定目的评估预测误差的功能"。虽然存在重叠,但Sklearn的统计函数并不适合Keras中度量的定义。 Sklearn指标可以返回两个维度大于1的浮点数组,数组,二维数组。预测方法在Keras中没有这样的对象。
回答你的问题:
这取决于您想要触发的位置:
答案 1 :(得分:-1)
生活所需的一切都在混乱的矩阵中。计算混淆矩阵并遵循我的公式:
实际上,这是通过以下方式完成的:
from sklearn.metrics import confusion_matrix
NBC = NBC.fit(X_train,y_train)
cm = confusion_matrix(y_test, NBC.predict(X_test))
tn, fp, fn, tp = cm.ravel()
print('tn: ',tn)
print('fp: ',fp)
print('fn: ',fn)
print('tp: ',tp)
print('------------------')
print(cm)
现在:
p_0 = (tn+??)/(tn+fp+fn+??)
print('p_0:',p_0)
P_class0 = ((tn+fp)/(tn+fp+fn+??))*((tn+fn)/(tn+fp+fn+??))
print('P_yes: ',P_yes)
P_class1 = ((fn+??)/(tn+fp+fn+??))*((fp+??)/(tn+fp+fn+??))
print('P_no: ',P_no)
pe = P_yes + P_no
print('pe: ',pe)
κ = (p_0-pe)/(1-pe)
print('κ: ',κ)