Keras显示召回率(classification metrics can't handle a mix of multi-label-indicator targets) model.predict

本来程序中用了model.evaluate来求loss和准确率

score, acc = model.evaluate(X_test, y_test, batch_size=batch_size)

后来想加上recall,查了半天也没找到model.evaluate能返回recall。

后来就想换个函数:

y_pred=model.predict(X_test, batch_size=batch_size)#此处传入的X_test和Input层的内容一致,要是多个Input(),就传个列表,和model.fit传入的参数一致(不传y_test)
print(classification_report(Y_test, y_pred))

先用model.predict()求出预测结果y_pred,然后利用包:

from sklearn.metrics import classification_report将其打印出来。

但是有了报错:classification metrics can't handle a mix of multioutput and continuous-multi-label-indicator targets

由于我们预测的概率向量[0.2,0.3,0.4,0.1]是这样,和真实标签的one-hot表示有出入[0,0,1,0],所以可以将预测的概率向量y_pred进行以下转换:

    for i in range(len(y_pred)):
        max_value=max(y_pred[i])
        for j in range(len(y_pred[i])):
            if max_value==y_pred[i][j]:
                y_pred[i][j]=1
            else:
                y_pred[i][j]=0

结果展示:

Keras显示召回率(classification metrics can't handle a mix of multi-label-indicator targets) model.predict_第1张图片

classification_report(y_test, y_pred)默认是小数点后两位,所以可以通过
print(classification_report(y_test, y_pred,digits=4))

显示小数点后四位。

如果有更方便的解决方案请联系我~

你可能感兴趣的:(python,Kears,机器学习,tensorflow)