首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算Keras模型中的度量深度学习

计算Keras模型中的度量深度学习
EN

Stack Overflow用户
提问于 2020-06-12 03:24:48
回答 1查看 173关注 0票数 0

希望你做得很好;我有一个预测人体姿势(弯曲,躺着,坐着,站立)的模型,然后我有一个多标签分类问题,我会计算我的模型的指标(准确性,fmeasure,回忆,精度),问题是,下面的代码在多标签分类中计算这些指标是正确的吗?

代码语言:javascript
复制
def check_units(y_true, y_pred):
    if y_pred.shape[1] != 1:
        y_pred = y_pred[:,1:2]
        y_true = y_true[:,1:2]

return y_true, y_pred

def precision(y_true, y_pred):
    y_true, y_pred = check_units(y_true, y_pred)
    true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
    precision = true_positives / (predicted_positives + K.epsilon())

return precision

def recall(y_true, y_pred):
    y_true, y_pred = check_units(y_true, y_pred)
    true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
    recall = true_positives / (possible_positives + K.epsilon())

return recall

def fmeasure(y_true, y_pred):
    def recall(y_true, y_pred):
        true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
        possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
        recall = true_positives / (possible_positives + K.epsilon())

    return recall

def precision(y_true, y_pred):
    true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
    precision = true_positives / (predicted_positives + K.epsilon())

    return precision

    y_true, y_pred = check_units(y_true, y_pred)
    precision = precision(y_true, y_pred)
    recall = recall(y_true, y_pred)

return 2*((precision*recall)/(precision+recall+K.epsilon()))
EN

回答 1

Stack Overflow用户

发布于 2020-06-18 08:55:31

您可以使用sklearn中的内置函数,如下所示:

代码语言:javascript
复制
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score

true_labels=[0,0,1,0,2,1,1,2,2,0,0,1]  # three classes 0,1,2
predicted_labels=[0,1,1,0,2,0,1,2,1,1,0,1] # predicted labels

print("Accuracy=",accuracy_score(true_labels,predicted_labels))
print("F1 Score=",f1_score(true_labels,predicted_labels, average="macro"))
print("Precision=",precision_score(true_labels,predicted_labels, average="macro"))
print("Recall=",recall_score(true_labels,predicted_labels, average="macro"))

您可以将函数的结果与这些内置函数进行比较,以对其进行测试。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62332020

复制
相关文章

相似问题

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