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]