在 sklearn.metrics.confusion_matrix 中哪个类标签被认为是负面的?
Posted
技术标签:
【中文标题】在 sklearn.metrics.confusion_matrix 中哪个类标签被认为是负面的?【英文标题】:Which class label is considered negative in sklearn.metrics.confusion_matrix? 【发布时间】:2019-05-13 20:58:40 【问题描述】:我知道我们可以用一个列表来表示顺序:
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0], labels=[0,1]).ravel()
但矩阵元素的含义取决于两个假设:
-
行或列是否被视为 ACTUAL(或 PREDICTED)标签。
0
或1
被假定为正(或负)类。
the docstring 中没有直接提及。
这个问题已经被问过here,但我想我在这里问的是混淆的根源,而不是一般意义上的混淆。问题不在于如何解释混淆矩阵,而在于如何将特定类别设置为正面或负面。
【问题讨论】:
Scikit-learn confusion matrix的可能重复 我在发布问题之前注意到了这一点,但我认为更中肯的问题可能会有所帮助。 【参考方案1】:简答
在二元分类中,使用参数labels
时,
confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0], labels=[0,1]).ravel()
类标签0
和1
分别被视为Negative
和Positive
。这是由于列表隐含的顺序,而不是字母数字顺序。
验证: 考虑这样的不平衡类标签:(使用不平衡类使区分更容易)
>>> 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
array([12, 1, 2, 1])
对应于:
Actual
| 1 | 0 |
___________________
pred 1 | TP=1 | FP=1 |
0 | FN=2 | TN=12|
其中FN=2
表示模型预测样本为负(即0
)但实际标签为正(即1
)的两种情况,因此假负等于2。
TN=12
类似,在 12 种情况下,模型正确预测了负类 (0
),因此 True Negative 等于 12。
这样一来,假设sklearn
将第一个标签(在labels=[0,1]
中作为否定类)考虑在内,所有内容都会相加。因此,这里的第一个标签0
代表否定类。
【讨论】:
以上是关于在 sklearn.metrics.confusion_matrix 中哪个类标签被认为是负面的?的主要内容,如果未能解决你的问题,请参考以下文章
在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?