我构建了一个分类器,想要试用pd.crosstab
。但是,它似乎给了我错误的总元素数量令人困惑,我无法弄清楚原因。
实际代码:
df_confusion = pd.crosstab(pd.Series(y_pred), pd.Series(y_test),
rownames=['Predicted'], colnames= ['Actual'],
margins=True)
键入jupyter notebook:df_confusion
产生
**Actual** 0.0 1.0 **All**
**Predicted**
**0.0** 6529 1951 8480
**1.0** 718 208 926
**All** 7247 2159 9406**
而 y_pred 和 y_test 中每个类别0和1的元素总数如下:
sum(y_pred==0) equals 34264
sum(y_pred==1) equals 3514
sum(y_test==1) equals 34259
sum(y_test==0) equals 3519
但是,导入confusion_matrix会产生预期答案
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_pred)
array([[34259, 0],
[ 5, 3514]], dtype=int64)
答案 0 :(得分:0)
我遇到了类似的问题,混淆矩阵中的元素总数与系列中的元素数不匹配。
这是由错误的索引引起的。我的系列之一是通过从数据框中删除行创建的,而另一个是在循环中创建的。所以2系列中的指数不匹配。我不得不在第一个系列中应用 reset_index(drop=True)
。