【Python机器学习系列】一文教你绘制机器学习模型决策曲线
ztj100 2024-11-08 15:06 16 浏览 0 评论
这是我的第300篇原创文章。
一、引言
一个预测模型的输出通常为介于0到1之间的一个值(pi),根据事前确定的阈值概率(cutoff value, probability threshold, pt),当pi > pt时,判断为阳性;当pi < pt时,判断为阴性。因此,患者被分成了预测阳性而施加干预和预测阴性而不施加干预的两组。
在预测阳性组中,存在着真阳性病人(TP)和假阳性病人(FP)。显然,治疗真阳性病人会带来受益(benefits),而治疗假阳性病人会造成伤害(harms)。选择不同的阈值概率,会改变TP和FP的比值,从而受益和伤害的改变。为了同时考虑受益和伤害,决策曲线分析中,将模型的临床效用量化为净获益(net benefit)。
所谓决策曲线,即是以不同的probability threshold为横坐标,其所对应的net benefit为纵坐标,画出的曲线。绘制模型的决策曲线,我们只需要模型输出的每个样本的预测概率(y_pred_score) 和 每个样本真实的分类(y_label) 。
二、实现过程
2.1 读取数据
data = pd.read_csv(r'Dataset.csv')
df = pd.DataFrame(data)
2.2 提取目标变量和特征变量
target = 'target'
features = df.columns.drop(target)
X = df[features]
y = df[target]
2.3 划分数据集
X_train, X_test, y_train, y_test = train_test_split(df[features], df[[target]], test_size=0.2, random_state=0)
2.4 归一化
mm1 = MinMaxScaler() # 特征进行归一化
X_train_m = mm1.fit_transform(X_train)
mm2 = MinMaxScaler() # 标签进行归一化
y_train_m = mm2.fit_transform(y_train)
2.5 模型构建与训练
model = LogisticRegression()
model.fit(X_train_m, y_train_m)
2.6 模型推理
X_test_m = mm1.transform(X_test) # 注意fit_transform() 和 transform()的区别
y_pred_m = model.predict(X_test_m)
y_scores = model.predict_proba(X_test_m)
y_pred = mm2.inverse_transform(np.reshape(y_pred_m, (-1, 1)))
2.7 绘制决策曲线
thresh_group = np.arange(0, 1, 0.05)
net_benefit_model = calculate_net_benefit_model(thresh_group, list(y_scores[:, 1]), y_test)
net_benefit_all = calculate_net_benefit_all(thresh_group, y_test)
fig, ax = plt.subplots()
ax = plot_DCA(ax, thresh_group, net_benefit_model, net_benefit_all)
plt.show()
结果:
作者简介: 读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。关注gzh:数据杂坛,获取数据和源码学习更多内容。
原文链接:
相关推荐
- 利用Python开发App实战(用python开发的软件有哪些)
-
我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了。最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一...
- python 目录结构的规划,应该先建立好
-
上一篇文章说了【...
- linux安装python(linux安装jdk)
-
linux安装python3.5.11.linux如果已经安装了python2.*不要管它!!!2.安装依赖环境 一定要使用yum去安装!!!因为有的包有依赖或者升级需要,使用rpm取消强制依赖...
- 说我菜?那好,我用Python制作电脑与手机游戏脚本来赢你
-
前言大家好,我叫善念。我发现我的粉丝量涨得很慢,这次厚脸皮要博关注。这次做的是一个小巧的游戏脚本,本质上它可以用于任意的电脑与手机游戏。...
- Python PyInstaller安装和使用教程及失败解决办法
-
安装命令:pipinstallpyinstaller更新命令:pipinstall–upgradepyinstaller安装过程中可能会有各种问题,...
- 「从零开始Python爬虫」1.8.1 Pyspider的安装
-
pyspider是国人binux编写的强大的网络爬虫框架,它带有强大的WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时支持多种数据库后端、多种消息队列,另外还支持JavaScript...
- 35.Centos中安装python和web.py框架
-
文章目录前言1.Centos7python:2.Centos8python:3.进行下载web.py框架然后应用:4.安装好之后进行验证:5.总结:前言...
- supervisord离线安装(supervisor 离线安装)
-
一、简介:...
- 详解pip的基本使用和离线安装Python第三方库
-
概述有的时候我们需要在内网环境下去用pip安装某些Python安装包,这个时候可以怎么实现呢?1、内网编译安装pip1.1、安装setuptoolssetuptools源码包:https://pyp...
- Python第三方包的离线安装(python 离线安装第三方包)
-
Python的强大在于各种第三方库,但由于工作网络与互联网物理隔离,无法通过pip直接在线安装第三方库。下面以pyautogui的安装为例,简要描述离线安装的过程。互联网端操作通过Anaconda创建...
- Python打包exe文件方法:py2exe和pyinstaller安装使用教程
-
py2exe和pyinstaller两种将py文件打包的工具和方式使用起来效率感觉差不太多,pyinstaller可以将所有文件打包成单个可执行的exe文件而略胜一筹,实测打包的文件大小也稍微小一点,...
- 5分钟-python包管理器pip安装(python pip安装包)
-
pip是一个现代的,通用、普遍的Python包管理工具。提供了对Python包的查找、下载、安装、卸载的功能,是Python开发的基础。第一步:PC端打开网址:选择gz后缀的文件下载第二步:...
- Windows安装Python教程(windows安装python3步骤)
-
1-1安装Python3.7.0解释器首先需要说一下,Windows系统主要讲解Win7环境下Python3.7.0的安装操作。推荐WinXP和win10的Python解释器版本为Pyth...
- 会用you-get命令工具吗(下载视频easy)
-
You-Get是一个小型的命令行实用程序,用于从Web下载媒体内容(视频,音频,图像),只需要安装该命令即可。Windows如何安装安装先决条件Python3或者FFmpeg(强烈推荐)一、通过pi...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- node卸载 (33)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- exceptionininitializererror (33)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)