首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Keras中实现Sklearn度量?

如何在Keras中实现Sklearn度量?
EN

Stack Overflow用户
提问于 2018-02-01 16:05:35
回答 2查看 2.9K关注 0票数 2

尝试过谷歌搜索,但找不到如何在keras中实现Sklearn度量,比如cohen、roc、f1score作为不平衡数据的度量标准。

如何在Keras中实现Sklearn度量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-01 23:02:54

Keras中的度量和Sklearn中的度量意味着不同的东西。

在Keras中,度量标准几乎与损失相同。在每个批次结束时,为了报告和日志记录目的,它们都会在训练期间被调用。示例用法是失去'mse‘,但您仍然希望看到'mae’。在这种情况下,您可以添加“mae”作为模型的度量标准。

在Sklearn中,度量函数按照“度量模块为特定目的实现评估预测错误的函数”的定义应用于预测。虽然存在重叠,但Sklearn的统计功能不适合Keras中的度量定义。Sklearn度量可以返回两个维度都大于1的浮点、数组、二维数组,通过预测方法在Keras中没有这样的对象。

回答你的问题:

这取决于您想要触发的位置:

  1. 每批或每一时期的结束 您可以编写在批处理结束时触发的自定义回调。
  2. 后预测 这似乎容易多了。让Keras预测整个数据集,捕获结果,然后将y_true和y_pred数组提供给相应的Sklearn度量。
票数 5
EN

Stack Overflow用户

发布于 2020-05-28 08:27:05

你所需要的一切都在混乱的矩阵中。计算混淆矩阵并遵循我的公式:

在实践中,这样做的方式如下:

代码语言:javascript
复制
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) 

现在:

代码语言:javascript
复制
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('κ: ',κ)
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48567012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档