百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

【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 读取数据

Bash
data = pd.read_csv(r'Dataset.csv')
df = pd.DataFrame(data)

2.2 提取目标变量和特征变量

Bash
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机器学习系列】一文教你绘制机器学习模型决策曲线-逻辑回归模型为例(案例+源码)

相关推荐

利用Python开发App实战(用python开发的软件有哪些)

我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了。最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一...

python 目录结构的规划,应该先建立好

上一篇文章说了【...

AI学习基础-搭建OpenSPG环境(ai中opentype怎么用)

...

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...

取消回复欢迎 发表评论: