我正在使用scikit-learn,并且想以混淆矩阵的形式显示精度。我有这样一个混淆矩阵:
array([[1266, 45, 6], [ 25, 1507, 19], [ 36, 82, 858]], dtype=int64)
我应用了这里另一个帖子中的代码:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
输出结果是:
array([[0.96127563, 0.03416856, 0.00455581], [0.01611863, 0.97163121, 0.01225016], [0.03688525, 0.08401639, 0.87909836]])
然而,这显示的是召回率,而不是精度。我如何才能显示精度呢?
回答:
找到了,只需将axis=1改为axis=0即可
cm = cm.astype('float') / cm.sum(axis=0)[:, np.newaxis]
好的,但这个代码有问题,我的输出是这样的:
array([[0.954, 0.034, 0.005], [0.015, 0.922, 0.012], [0.041, 0.093, 0.972]])
当你对任何一行求和时,应该等于1,但结果并非如此。
已解决
使用以下代码:
C / C.astype(np.float).sum(axis=0)