从 pd.crosstab 中的混淆矩阵中找出准确度

Finding the accuracy from the confusion matrix in pd.crosstab

使用 pd.crosstab,我可以根据预测数据生成混淆矩阵。我使用以下行生成混淆矩阵:

pd.crosstab(test_data['class'], test_data['predicted'], margins = True)

与 R 类似,我可以使用下面的行生成混淆矩阵

confusion_matrix <- table(truth = data.test$class, prediction = predict(model, data.test[,-46], type = 'class'))

在 R 中,我可以使用这条线找到我的模型的准确性

sum(diag(confusion_matrix)) / sum(confusion_matrix)

在 Python 中,是否有等效的 sum(diag(confusion_matrix)) / sum(confusion_matrix) 来计算我的混淆矩阵的准确性?

除了 pandas(例如 Scikit learn)之外,我宁愿不使用任何库。

需要用到numpy,先用np.diag对交叉表求对角线求和,然后把交叉表转成numpy数组再求和:

import numpy as np
np.random.seed(123)
test_data = pd.DataFrame({'class':np.random.randint(0,2,10),
                        'predicted':np.random.randint(0,2,10)})

tab = pd.crosstab(test_data['class'], test_data['predicted'])

predicted   0   1
class       
0   4   3
1   0   3

tab = pd.crosstab(test_data['class'], test_data['predicted'])
np.diag(tab).sum() / tab.to_numpy().sum()
0.7

还是硬编码?不确定为什么要这样做:

(tab.iloc[0,0] + tab.iloc[1,1]) / tab.to_numpy().sum()