Scikit Learn中的概率校准曲线

概率校准是一种用于将二分类的输出分数转换为概率的技术,以与目标类的实际概率相关联。在本文中,我们将讨论概率校准曲线以及如何使用Scikit-learn绘制它们。

概率校准

概率校准曲线是二分类问题的正类的预测概率和实际观察频率之间的图。它用于检查分类器的校准,即,预测概率与实际概率的匹配程度。一个完美校准的分类器将有一个遵循45度线的校准曲线,这意味着预测概率与实际概率相匹配。

它是修改二分类模型的预测概率以便与目标类别的实际概率相关联的过程。概率校准的目的是确保预测的概率被良好校准,即,比如说,预测概率为0.8对应于正类为真的实际可能性大约为0.8。换句话说,预测的概率必须是对实际可能性的准确预测。

在许多分类任务中,模型的输出是0和1之间的概率分数,指示给定样本属于特定类别的模型的置信度。然而,这些预测概率可能并不总是与类别的真实概率相匹配,特别是当模型在不平衡数据上训练或具有复杂的决策边界时。

重要术语:

  • 二分类器(Binary Classifier):一种经过训练的分类器,用于区分两个类或类别,通常标记为0和1。它通常用于各种应用,包括垃圾邮件过滤,欺诈检测等。
  • 预测概率:这些是分类模型根据给定的输入特征集预测的概率。
  • 真实概率:这些是基础类的实际概率。
  • 校准曲线:这是预测概率和真实概率之间差异的图表。它表示分类模型的校准,并表示模型的过度自信或不足。
  • 可靠性图表:当预测概率被划分为离散区间,并为每个区间绘制平均预测概率和阳性类别的真实频率时,它被称为可靠性图。
  • Brier评分:Brier评分是预测概率和真实概率之间的均方误差,范围从0(完美校准)到1(最差校准)。

Scikit-learn提供了两种绘制概率校准曲线的方法:

  • CalibratedClassifierCV -它是一个元估计器,用于在数据集上训练分类器,并使用交叉验证来校准预测概率。
  • calibration_curve -这是一个计算给定预测概率集的真阳性率和预测阳性率的函数。

现在,让我们看看如何使用Scikit-learn绘制概率校准曲线。

案例

# Import necessary libraries
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import brier_score_loss

# Load the Breast Cancer Wisconsin (Diagnostic) dataset
data = load_breast_cancer()
X = data.data
y = data.target

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y,
													test_size=0.2,
													random_state=23)

# Train a logistic regression classifier
clf = LogisticRegression(max_iter=1000, random_state=23)
clf.fit(X_train, y_train)

# Probability estimate
prob_pos = clf.predict_proba(X_test)[:, 1]

# Brier Score
b_score = brier_score_loss(y_test, prob_pos)
print("Brier Score :",b_score)

# True and Predicted Probabilities
true_pos, pred_pos = calibration_curve(y_test, prob_pos, n_bins=10)

#Plot the Probabilities Calibrated curve
plt.plot(pred_pos,
		true_pos, 
		marker='o', 
		linewidth=1, 
		label='Logistic Regression')

#Plot the Perfectly Calibrated by Adding the 45-degree line to the plot
plt.plot([0, 1], 
		[0, 1], 
		linestyle='--', 
		label='Perfectly Calibrated')


# Set the title and axis labels for the plot
plt.title('Probability Calibration Curve')
plt.xlabel('Predicted Probability')
plt.ylabel('True Probability')

# Add a legend to the plot
plt.legend(loc='best')

# Show the plot
plt.show()

输出

Brier Score : 0.022772327739296966

在这里插入图片描述
在这个例子中,我们首先从Scikit-learn加载了乳腺癌威斯康星州(诊断)数据集,并将其分为训练集和测试集。然后,我们在训练集上训练逻辑回归分类器,并预测阳性类的概率(即,恶性肿瘤)。

然后,我们使用Scikit-learn的calibration_curve函数来计算给定预测概率集的真阳性率和预测阳性率。我们使用Matplotlib中的plot函数绘制这些比率,并将45度线添加到图中以表示完美校准的分类器。

最后,我们添加了标题、轴标签和图例,并使用Matplotlib中的show函数显示它。所得到的图显示逻辑回归分类器的概率校准曲线。

结论

在本文中,我们讨论了概率校准曲线以及如何使用Scikit-learn绘制它们。概率校准是保证二分类器预测概率准确可靠的重要技术。概率校准曲线可用于目视检查分类器的校准并比较不同分类器的校准。

我们展示了如何使用Scikit-learn的calibration_curve函数和Matplotlib绘制概率校准曲线的示例。在这个例子中,我们在乳腺癌威斯康星州(诊断)数据集上训练了一个逻辑回归分类器,并绘制了其概率校准曲线。

概率校准曲线只是二元分类器评估工具箱中的一个工具。它们可以与其他评估指标(如精度,召回率和ROC曲线)结合使用,以评估分类器的性能并调整其参数。

重要的是要记住,概率校准并不总是必要的或有益的二进制分类的所有应用。这取决于手头问题的具体要求,在将分类器用于重要决策之前,评估分类器的校准始终是一个很好的做法。

总的来说,概率校准曲线是二分类器评估的强大工具,Scikit-learn提供了一种简单有效的方法来绘制它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/493172.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DLS-42/5-5双位置继电器 柜内安装板前接线 JOSEF约瑟

系列型号: DLS-41/10-2双位置继电器; DLS-41/9-3双位置继电器; DLS-41/8-4双位置继电器; DLS-41/6-6双位置继电器; DLS-42/9-1双位置继电器; DLS-42/8-2双位置继电器; DLS-42/7-3双位置继…

理解CPU与执行指令原理

本文侧重介绍cpu的工作任务,与cpu执行指令的过程是怎么样的? 目录 1.理解CPU 1.1.CPU的功能 1.2.CPU的逻辑构成 2.认识指令 2.1.什么是指令 2.2.CPU执行指令的准备工作(重点) 3.指令的执行过程 前景知识: 什么是计算机 就是遵循冯诺依…

微信小程序使用Vant组件库流程

目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。这样开发原生微信小程序的会方便很多。 官方网址:Vant Weapp - 轻量、可靠的小程序 UI 组件库 步骤一 通过 npm 安装 npm i vant/weap…

RXMA1 RK211 075 AC220V中间继电器 柜内安装板前接线 JOSEF约瑟

系列型号 RXMA1 RK 211 063中间继电器;RXMA1 RK 211 064中间继电器; RXMA1 RK 211 066中间继电器;RXMA1 RK 211 072中间继电器; RXMA1 RK 211 073中间继电器;RXMA1 RK 211 074中间继电器; RXMA1 RK 211 025中间继电器;…

k8s入门到实战(十二)—— pod的深入理解

pod 深入理解 pod 容器生命周期 pod 的几种状态 可以使用命令kubectl get pod -w实时监控查看 pod 的状态 running:正常运行状态Pending:资源分配不对的时候会挂起,出现此状态Terminating:某个节点突然关机,上面的 p…

uniapp微信小程序消息订阅详解

一、微信公众平台申请订阅模板 注意:订阅信息 这个事件 是 当用户 点击的时候触发 或者 是 支付成功后触发, 用户勾选 “总是保持以上选择,不再询问” 之后或长期订阅,下次订阅调用 wx.requestSubscribeMessage 不会弹窗&#xf…

浅析扩散模型与图像生成【应用篇】(十三)——PITI

13. Pretraining is All You Need for Image-to-Image Translation 该文提出一种基于预训练扩散模型的图像转换方法,称为PITI。其思想并不复杂,就是借鉴现有视觉和NLP领域中常见的预训练方法,考虑预先在一个大规模的任务无关数据集上对扩散模…

基于java+springboot+vue实现的校园二手交易系统(文末源码+Lw+ppt)23-336

摘 要 自从新冠疫情爆发以来,各个线下实体越来越难做,线下购物的人也越来越少,随之带来的是一些不必要的浪费,尤其是即将毕业的大学生,各种用品不方便携带走导致被遗弃,造成大量的浪费。本系统目的就是让…

浏览器如何渲染页面

浏览器渲染页面的过程是一个多步骤的复杂流程,下面我将通过一个简单的例子来逐步说明这一过程: 以下是浏览器渲染该页面的主要步骤: 请求HTML文档: 用户在浏览器中输入URL并回车,浏览器向服务器发送HTTP请求。 服务器…

【Java多线程】1——多线程知识回顾

1 多线程知识回顾 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记仓库👉https://github.com/A-BigTree/tree-learning-notes 个人主页👉https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star…

测试开发工程师(QA)职业到底需要干些什么?part6:数据测试工程师QA

常见任务和工作内容 作为数据测试工程师QA(Quality Assurance),您的主要职责是确保数据的质量、准确性和一致性。以下是数据测试工程师QA的一些常见任务和工作内容: 数据验证和准确性测试:您将负责验证数据的准确性和…

数论问题代码模板

文章目录 一、质数1.1、质数筛(筛1~n中的所有质数)1.2、判断一个数是否为质数1.3、对一个数进行质因数分解 二、快速幂2.1、费马小定理——乘法逆元2.2、快速幂 三、约数3.1、N个数的正约数集合3.2、一个数的正约数集合 四、欧拉函数(互质数数…

洗地机好用吗?哪款型号值得推荐?看完本文你就知道

在如今社会生活节奏不断加快的情况下,洗地机已经成为众多家庭的必备的清洁设备,面对市面上种类繁多的洗地机,我们常常会发出感叹“洗地机好用吗?洗地机哪个型好用?”等的疑问,今天,为了帮助大家…

一文搞定用python实现终身免费的听书工具

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

C语言程序练习——汉诺塔递归

1. 题目 在终端输入汉诺塔层数n&#xff0c;实现将n层汉诺塔通过三座塔座A、B、C进行排列 2. 代码 #include <stdio.h>int hannuota(int len, int str, int tmp, int dst) {if (1 len){printf("%c -> %c\n", str, dst);}else{hannuota(len-1, str, dst, …

好展位、抢先订!2024第二十二届上海国际涂料展|上海涂料展

致/To: 展会负责人、 市场部、 企划部、 销售部负责人 2024中国国际涂料博览会暨第二十二届中国国际涂料展览会 时间&#xff1a;2024年8月7-9日 地点&#xff1a;上海新国际博览中心 主办方&#xff1a; 中国涂料工业协会 承办方&#xff1a; 北京涂博国际展览有限公司 …

javaSwing坦克大战游戏

在游戏开发领域&#xff0c;坦克大战是一款经典的游戏&#xff0c;其简单而又耐玩的玩法吸引了无数玩家。而今&#xff0c;在Java编程技术的支持下&#xff0c;我们可以用Java Swing技术轻松实现这款经典游戏。本文将介绍如何使用Java Swing技术编写坦克大战游戏&#xff0c;并…

某对象存储元数据集群改造流水账

软件产品&#xff1a;某厂商提供的不便具名的对象存储产品&#xff0c;核心底层技术源自HDFS和Amazon S3&#xff0c;元数据集群采用了基于MongoDB的NOSQL数据库产品和MySQL数据库产品相结合。 该产品的元数据逻辑示意图如下&#xff1a; 业务集群现状&#xff1a;当前第3期建…

Qt 窗口MainWindow(上)

Qt 窗口是通过 QMainWindow 类来实现的。 QMainWindow 是一个为用户提供主窗口程序的类&#xff0c;继承自 QWidget 类&#xff0c;并且提供了⼀个预定义的布局。QMainWindow 包含一个菜单栏&#xff08;menubar&#xff09;、多个工具栏(toolbars)、多个浮动窗口&#xff08;…

JVM第八讲:GC - Java 垃圾回收基础知识

GC - Java 垃圾回收基础知识 本文是JVM第八讲&#xff0c; Java 垃圾回收基础知识。垃圾收集主要是针对堆和方法区进行&#xff1b;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的&#xff0c;只存在于线程的生命周期内&#xff0c;线程结束之后也会消失&#xff0…
最新文章