我有2个阵列:
np.array(y_pred_list).shape
# returns (5, 47151, 10)
np.array(y_val_lst).shape
# returns (5, 47151, 10)
np.array(y_pred_list)[:, 2, :]
# returns
array([[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
np.array(y_val_lst)[:, 2, :]
# returns
array([[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)
我想查看所有47151个示例,并计算"准确度"。表示y_pred_list中与y_val_lst匹配的总和超过47151.这是什么比较函数?
答案 0 :(得分:3)
您可以在sklearn.metrics
找到很多有用的分类分数,尤其是accuracy_score()
。请参阅doc here,您可以将其用作:
import sklearn
acc = sklearn.metrics.accuracy_score(np.array(y_val_list)[:, 2, :],
np.array(y_pred_list)[:, 2, :])
答案 1 :(得分:2)
听起来你想要这样的东西:
accuracy = (y_pred_list == y_val_lst).all(axis=(0,2)).mean()
...虽然因为你的数组显然是浮点数组,你可能想要允许数值精度错误,而不是坚持完全相等:
accuracy = (numpy.abs(y_pred_list - y_val_lst) < tolerance ).all(axis=(0,2)).mean()
(例如,tolerance = 1e-10
)
.all(axis=(0,2))
调用记录了当沿着维度0(即具有范围5的那个)和维度2(一个)时,其输入中的所有内容都是True
(即一切都匹配)的情况有程度10)。它输出一个长度为47151的一维数组。然后.mean()
调用会给出该序列中匹配的比例,这是我对47151&#34;的最佳猜测。