Keras中的的6种accuracy
accuracy
keras.metrics.accuracy(y_true,y_pred)
如真实标签y_true为[0,1,3,3,4,2],
但被一个模型预测为[0,1,3,4,4,4],即y_pred=[0,1,3,4,4,4],那么该模型的accuracy=4/6=66.67%
binary_accuary
keras.metrics.binary_accuracy(y_true,y_pred,threshold=0.5)
适用于二分类,计算除了y_true和y_pred外,还有一个threshold参数,默认0.5,
将y_pred中的每个预测值和threshold对比,大于threshold设置为1,小于设置为0
比如有
6个样本,其中y_true为[0,0,0,1,1,0],y_pred为[0.2,0.3,0.6,0.7,0.8,0.1],那么其
binary_accuracy=5/6=87.5%
categorical_accuracy
keras.metrics.categorical_accuracy(y_true,y_pred)
categorical_accuracy针对的是y_true为onehot标签,y_pred为向量。如
y_true为[[0,0,1],[0,1,0],[0,1,0],[1,0,0],y_pred为[0.1,0.6,0.3],[0.2,0.7,0.1],[0.3,0.6,0.1],
[0.9,0,0.1],则categorical_accuracy为75%。具体将y_true转为非onehot的形式,即
y_true_new=[2,1,1,0];根据y_pred中的每个样本预测分数得到y_pred_new=[1,1,1,0];
所以categorical_accuracy = 75 %
sparse_categorical_accuracy
keras.metrics.sparse_categorical_accuracy(y_true,y_pred)
y_true为非onehot形式。如y_true[2,1,1,0],y_pred为[0.1,0.6,0.3],[0.2,0.7,0.1],[0.3,0.6,0.1]
[0.9,0,0.1]。则sparse_categorical_accuracy=75%
top_k_categorical_accuracy
keras.metrics.sparse_top_k_categorical_accuracy(y_true,y_pred,k=5)
在categorical_accuracy基础上加上top_k。只要求样本在真值类别上的预测分数排在
其所有类别的前K名。如有4个样本[0,0,1],[0,1,0],[0,1,0],[1,0,0],y_pred为[0.3,0.6,0.1]
[0.5,0.4,0.1],[0.3,0.6,0.1],[0.3,0.6,0.1],[0.9,0,0.1]。则k=1 , top_k_categorical_accuracy=50%
k=2, top_k_categorical_accuracy=75% k=3, top_k_categorical_accuracy=100%
sparse_top_k_categorical_accuracy
keras.metrics.sparse_top_k_categorical_accuracy(y_true,y_perd,k=5)
功能一样。只是y_true为非onehot型。如y_true[2,1,1,0]