我有五个班级:Q0_10、Q10_20、Q20_30、Q30_40 和 Q40_50。例如,Q10_20 表示帐户的百分位排名介于第 10 个百分位和第 20 个百分位之间。
通过对多个账户的一些分类技术,我预测了类别并得到如下混淆矩阵:
Predicted Q0_10 Q10_20 Q20_30 Q30_40 Q40_50
Actual
Q0_10 5 6 0 4 5
Q10_20 1 7 4 1 0
Q20_30 5 3 2 0 1
Q30_40 4 2 5 2 0
Q40_50 0 1 2 1 7
一种做热图的方法如下:
array = [[5,6,0,4,5],
[1,7,4,1,0],
[5,3,2,0,1],
[4,2,5,2,0],
[0,1,2,1,7]]
df_cm = pd.DataFrame(array, index = [i for i in "ABCDE"],
columns = [i for i in "ABCDE"])
sn.heatmap(df_cm, annot=True)
但这并不能完全给出我想要的。我想应用两个标准。
一个是离左边对角线越近越好。例如,当实际类别为 Q10_20 时,我们有 1 个帐户分类为 Q0_10 和 1 个帐户分类为 Q30_40。对我来说,预测为Q0_10的账户颜色应该比分类为Q30_40的账户颜色好,因为它更远。
其次是账户数量的大小。例如,1 个账户实际上是 Q10_20,预测为 Q0_10,4 个账户实际上也是 Q10_20,但预测为 Q20_30。此处,Q0_10 与 Q10_20 的距离与 Q20_30 的距离相同。所以从那个角度来看颜色编码没有什么不同。但由于更多的账户被预测为 Q20_30,所以颜色应该强调 4 的大小。