Scikit Learn提供了一个confusion_matrix函数from sklearn.metrics import confusion_matrix
y_actu = [2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2]
y_pred = [0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2]
confusion_matrix(y_actu, y_pred)
输出一个Numpy数组array([[3, 0, 0],
[0, 1, 2],
[2, 1, 3]])
但也可以使用Pandas创建混淆矩阵:import pandas as pd
y_actu = pd.Series([2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2], name='Actual')
y_pred = pd.Series([0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2], name='Predicted')
df_confusion = pd.crosstab(y_actu, y_pred)
您将得到一个(标记良好的)Pandas数据框:Predicted 0 1 2
Actual
0 3 0 0
1 0 1 2
2 2 1 3
如果您添加margins=Truelikedf_confusion = pd.crosstab(y_actu, y_pred, rownames=['Actual'], colnames=['Predicted'], margins=True)
您还将获得每行和每列的总和:Predicted 0 1 2 Al