Pandas - pd.crosstab给了我错误的分类

时间:2017-09-10 19:18:45

标签: python python-2.7 pandas crosstab

我构建了一个分类器,想要试用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)

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,混淆矩阵中的元素总数与系列中的元素数不匹配。 这是由错误的索引引起的。我的系列之一是通过从数据框中删除行创建的,而另一个是在循环中创建的。所以2系列中的指数不匹配。我不得不在第一个系列中应用 reset_index(drop=True)