哪个 class 标签在 sklearn.metrics.confusion_matrix 中被认为是负面的?
Which class label is considered negative in sklearn.metrics.confusion_matrix?
我知道我们可以用一个列表来表示顺序:
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0], labels=[0,1]).ravel()
但矩阵元素的含义取决于两个假设:
- 行或列是否被视为实际(或预测)标签。
- 是否假定
0
或 1
为正(或负)class。
其中 none 直接在 the docstring. 中提到
这个问题已经有人问过here,但我想我在这里问的是混淆的根源,而不是一般意义上的混淆。问题不在于如何解释混淆矩阵,而在于如何将特定的 class 设置为正数或负数。
简答
在二进制 classification 中,当使用参数 labels
时,
confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0], labels=[0,1]).ravel()
class 标签 0
和 1
分别被视为 Negative
和 Positive
。这是由于列表隐含的顺序,而不是字母数字顺序。
验证:
考虑这样的不平衡 class 标签:(使用不平衡 class 使区分更容易)
>>> y_true = [0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0]
>>> y_pred = [0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0]
>>> table = confusion_matrix(y_true, y_pred, labeels=[0,1]).reval()
这会让您感到困惑 table 如下:
>>> table
array([12, 1, 2, 1])
对应于:
Actual
| 1 | 0 |
___________________
pred 1 | TP=1 | FP=1 |
0 | FN=2 | TN=12|
其中 FN=2
表示有 2 种情况模型预测样本为负(即 0
)但实际标签为正(即 1
) , 因此 False Negative 等于 2.
与 TN=12
类似,在 12 种情况下,模型正确预测了负数 class (0
),因此真负数等于 12。
假设 sklearn
认为第一个标签(在 labels=[0,1]
中为负数 class。因此,这里 0
,第一个标签, 代表负 class.
我知道我们可以用一个列表来表示顺序:
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0], labels=[0,1]).ravel()
但矩阵元素的含义取决于两个假设:
- 行或列是否被视为实际(或预测)标签。
- 是否假定
0
或1
为正(或负)class。 其中 none 直接在 the docstring. 中提到
这个问题已经有人问过here,但我想我在这里问的是混淆的根源,而不是一般意义上的混淆。问题不在于如何解释混淆矩阵,而在于如何将特定的 class 设置为正数或负数。
简答
在二进制 classification 中,当使用参数 labels
时,
confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0], labels=[0,1]).ravel()
class 标签 0
和 1
分别被视为 Negative
和 Positive
。这是由于列表隐含的顺序,而不是字母数字顺序。
验证: 考虑这样的不平衡 class 标签:(使用不平衡 class 使区分更容易)
>>> y_true = [0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0]
>>> y_pred = [0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0]
>>> table = confusion_matrix(y_true, y_pred, labeels=[0,1]).reval()
这会让您感到困惑 table 如下:
>>> table
array([12, 1, 2, 1])
对应于:
Actual
| 1 | 0 |
___________________
pred 1 | TP=1 | FP=1 |
0 | FN=2 | TN=12|
其中 FN=2
表示有 2 种情况模型预测样本为负(即 0
)但实际标签为正(即 1
) , 因此 False Negative 等于 2.
与 TN=12
类似,在 12 种情况下,模型正确预测了负数 class (0
),因此真负数等于 12。
假设 sklearn
认为第一个标签(在 labels=[0,1]
中为负数 class。因此,这里 0
,第一个标签, 代表负 class.