当列收到相同的值时,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)
我有创建混淆矩阵的函数
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)