从 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()
使用 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()