当列收到相同的值时,panada.crosstab 不会创建正方形 table

panada.crosstab doesn't create square table when column receives the same values

我有创建混淆矩阵的函数

def disp_conf_mat(y_act, y_pred, conf_mat_name):
data = {'y_Actual':    y_act,
    'y_Predicted': y_pred
    }
df = pd.DataFrame(data, columns=['y_Actual','y_Predicted'])
confusion_matrix = pd.crosstab(df['y_Actual'], df['y_Predicted'], rownames=['Actual'], colnames=['Predicted'])
sn.heatmap(confusion_matrix, annot=True)
plt.savefig(conf_mat_name)
plt.close()

但如果实际值为 [0,1,2,3] 且预测值全为零 [0,0,0,0],则 confusion_matrix 将不是 4x4 正方形,而是只是一个 4x1.

Predicted  0
Actual      
0          1
1          1
2          1
3          1

如何填写其他未获得任何预测值的列? (例如这里的第 1,2 和 3 列)

预计,如果需要所有可能的值添加DataFrame.reindex:

confusion_matrix = confusion_matrix.reindex(confusion_matrix.index, axis=1, fill_value=0)