Caffe不仅可以打印总体准确率,还可以打印每类的准确率。
在Keras的日志中,只有总体准确率。我很难计算出各个类的准确率。
Epoch 168/2000s - loss: 0.0495 - acc: 0.9818 - val_loss: 0.0519 - val_acc: 0.9796Epoch 169/2000s - loss: 0.0519 - acc: 0.9796 - val_loss: 0.0496 - val_acc: 0.9815Epoch 170/2000s - loss: 0.0496 - acc: 0.9815 - val_loss: 0.0514 - val_acc: 0.9801
有谁知道如何在Keras中输出每类的准确率吗?
回答:
对于多类分类,精确率和召回率是更有用的衡量指标(参见定义)。按照Keras的MNIST CNN示例(10类分类),你可以使用sklearn.metrics中的classification_report
来获取每类的衡量指标:
from sklearn.metrics import classification_reportimport numpy as npY_test = np.argmax(y_test, axis=1) # 将one-hot转换为索引y_pred = model.predict_classes(x_test)print(classification_report(Y_test, y_pred))
结果如下:
precision recall f1-score support 0 0.99 1.00 1.00 980 1 0.99 0.99 0.99 1135 2 1.00 0.99 0.99 1032 3 0.99 0.99 0.99 1010 4 0.98 1.00 0.99 982 5 0.99 0.99 0.99 892 6 1.00 0.99 0.99 958 7 0.97 1.00 0.99 1028 8 0.99 0.99 0.99 974 9 0.99 0.98 0.99 1009avg / total 0.99 0.99 0.99 10000