混淆矩阵中的 Scikit-learn 变化阈值

Posted

技术标签:

【中文标题】混淆矩阵中的 Scikit-learn 变化阈值【英文标题】:Scikit-learn Change Threshold in Confusion Matrix 【发布时间】:2020-07-16 22:25:23 【问题描述】:

对于二元分类器,我需要具有不同阈值的多个混淆矩阵。

我到处查找,但找不到一个简单的实现。

谁能提供一种方法来设置 scikit-learn 的混淆矩阵阈值?

我了解 scikit-learn 的混淆矩阵使用 0.5 作为阈值。

model = LogisticRegression(random_state=0).fit(X_train, y_train)
y_pred = model.predict(X_test)
confusion_matrix(y_test, y_pred)
Output: array([[24705,     8],
              [  718,     0]])

谢谢!

【问题讨论】:

混淆矩阵的阈值是什么意思?请展示您期望的输入和输出示例。 @MathiasMüller 我已经添加了代码 sn-p,基本上我使用的是 scikitlearn 的混淆矩阵方法但是如何更改它的阈值? 【参考方案1】:

我想通了,很简单:

threshold = 0.2
y_pred = (model.predict_proba(X_test)[:, 1] > threshold).astype('float')
confusion_matrix(y_test, y_pred)

希望这对正在寻找一种简单方法来更改阈值的其他人有所帮助!

【讨论】:

以上是关于混淆矩阵中的 Scikit-learn 变化阈值的主要内容,如果未能解决你的问题,请参考以下文章

混淆矩阵(Confusion matrix)的原理及使用(scikit-learn 和 tensorflow)

scikit-learn 多分类混淆矩阵

带有阈值python的混淆矩阵

scikit-learn 中聚类的混淆矩阵

使用没有分类器的 scikit-learn 绘制混淆矩阵

如何在用 scikit-learn / matplotlib 绘制的混淆矩阵中格式化 xticklabels?