每个单元格具有不同色标的 seaborn 混淆矩阵

Confusion Matrix with seaborn with different color scales per cell

我想用 True/False Positive/Negative 创建混淆矩阵图。

目标是让数字在 [0.0, 1.0] 范围内,对于 True Negative/Positive,色阶为 red->green,对于 False Negative/Positivegreen->red。我没有在 seaborn 文档中找到任何可以这样做的东西,这有可能吗?它将允许快速浏览数据,任何红色的东西都会有问题。

目标是左上角和右下角的单元格与左下角和右上角的颜色图不同。这可能吗?

示例代码:

import numpy as np;
import seaborn as sns; 
sns.set_theme()
uniform_data = np.ndarray(shape=(2,2))
uniform_data[0][0] = 0.1
uniform_data[0][1] = 0.9
uniform_data[1][0] = 0.05
uniform_data[1][1] = 0.95
ax = sns.heatmap(uniform_data, annot=True, cmap=sns.color_palette("vlag", as_cmap=True))

图像中的结果:

但我想要的是左上角红色(因为 0.1 在这里是一个错误的值),右下角蓝色(因为 0.95 在这里很好)

像这样的东西(用油漆快速完成,所以不要介意错误,但情绪是存在的):

您似乎想反转对角线上元素的颜色。 sns.heatmapdata 参数决定颜色,而 annot= 参数可以为注释设置不同的东西。修改数据并保留原始注释:

import numpy as np
import seaborn as sns

sns.set_theme()
uniform_data = np.ndarray(shape=(2, 2))
uniform_data[0][0] = 0.1
uniform_data[0][1] = 0.9
uniform_data[1][0] = 0.05
uniform_data[1][1] = 0.95
ax = sns.heatmap(np.abs(np.eye(2) - uniform_data), annot=uniform_data, cmap="vlag", vmin=0, vmax=1)