混淆矩阵的热图,它对到左对角线的距离和大小敏感

问题描述 投票:0回答:0

我有五个班级: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 的大小。

python dataframe seaborn heatmap confusion-matrix
© www.soinside.com 2019 - 2024. All rights reserved.