Py学习  »  机器学习算法

高大上的分析不会做?机器学习校正曲线来了!搞起!

解螺旋 • 1 年前 • 284 次点击  


机器学习模型绘制校正曲线(Calibration Curve)


Hi,大家好,我是晨曦

今天这期推文的主题依旧来自于群里小伙伴的提问QAQ

A同学晨曦,我现在已经会机器学习绘制ROC和DCA了,但是Calibration curve我还是不会,而且我探索了好久都还是不会,能不能出个教程,让我把区分度、校准度、临床决策曲线一网打尽

晨曦.....

那么,既然小伙伴们有了需求,晨曦自当是开启自己的“浪学”技能,所以本期推文的主题应运而生,让我们来看一下机器学习模型Calibration curve的绘制


引言

晨曦经常说:可视化的本质其实就是数据,我们在绘制某种可视化结果的时候,一定要问自己它的数据类型是什么?它是通过哪些数据绘制而成的

Calibration curve,直译过来就是校准曲线或校准图。其实,校准曲线就是实际发生率和预测发生率的散点图。实质上,校准图曲线是Hosmer-Lemeshow拟合优度检验的结果可视化。目前校准曲线常用来评价logistic回归和cox回归模型

但是如果我们可以获得输入数据,那么其实也是可以扩展到其它类型的模型上的

也就是说一旦我们知道了绘制某种可视化的数据类型,那么我们自然就可以去尝试绘制出相似的可视化结果,那么我们接下来通过一个案例来看一下,绘制Calibration curve需要的数据类型

#背景知识#目前来说绘制Calibration curve的流程为:(校准曲线就是实际发生率和预测发生率的散点图)##1.对预测进行分桶##2.求出每个桶里面所有样本预测概率的平均值,作为横坐标##3.求出每个桶里面阳性结局的概率,作为纵坐标。##4.将这些点连起来,就成为了校准曲线

重点看一下上面这个背景知识哦,很重要

#准备工作library(tidyverse)library(ggplot2)library(mlr3)library(mlr3learners)library(randomForest)#执行随机森林算法library(varSelRF)#挑选变量library(rms)

工欲善其事必先利其器~

#获取输入数据data("iris")df df#重点需要注意,校准曲线只适用于二分类任务,也就是有监督学习中分类的算法df %  filter(!Species == "virginica")df$Species index traindata testdata 


这里我们需要注意,我们绘制校准曲线的目的其实就是衡量我们的模型预测的准确程度,只不过是从另一方面来进行评价,模型表现越好,按照逻辑来说越贴近中间对角线,说明我们的模型校准度越好

#构建随机森林模型iris_rf                        ntree=400,important=TRUE,proximity=TRUE)#获取预测结果,注意我们这里获取的时候预测概率而不是labeliris_predp p_positive #我们这里提取预测阳性结局的概率#这里我们需要注意一个细节,基本上绘制DCA或者是校准曲线基本上都是阳性结局概率和其它相关的因素去绘制#我们这里的数据我们就随便选择一个分类作为阳性结局sor p_positive #响应变量也要按照这个排序y 


这里我们需要注意一下,按照网络上其它的观点并没有发现需要排序的目的,但是按照我们的数学知识告诉我们,数据就是这些,你排序了顺序可能会改变点的位置,但是对整体的结果应该是没有特别明显的影响,所以这里我们是根据顺序进行了排序,当然各位小伙伴也可以尝试不排序然后进行绘制

那么这里我们就可以复习一下校准曲线的目的了

观察分类模型的预测阳性结局概率是否接近于实际阳性结局概率

#这里我们还得小小的对响应变量进行重编码#把p_positive分为10个等分区间groep #获得预测阳性结局概率和实际阳性结局概率meanpred meanobs #整理数据finall                     meanobs = meanobs)#可视化ggplot(finall,aes(x = meanpred,y = meanobs))+ geom_point()+ geom_line(linetype = 2)+ geom_abline(slope = 1,intercept = 0,lty="solid",color = "red")+ labs(x="预测阳性结局概率",y = "实际阳性结局概率",title = "calibration_curve")+ theme_classic()#这里因为我们的数据很少,所以分箱后的点就会很少


然后还是那句话,既然我们已经得到了可视化的输入数据了,完全就可以按照网络上ggplot2的教程,把这个可视化做的更完美一些,因为我们会发现校准曲线本质上就是散点图+对角线仅此而已

那么,本期推文到这里就结束啦~

欢迎各位小伙伴在评论区提出自己感兴趣的内容哦,晨曦会根据自己的实际能力写出相关的心得哦~

我是晨曦,我们下期再见!

参考教程:

1.讲解Calibration curve:calibration_curve(校准曲线): 分类模型可视化技术之一 - 知乎 (zhihu.com)
2.校正曲线基于python和影像组学:医学影像深度学习系列(五)- 校准曲线(calibration)以及普拉特缩放platt scaling - 知乎 (zhihu.com)
3.ggplot2参考线绘制:R 数据可视化 —— ggplot 线图 - 知乎 (zhihu.com)
4.ggplo2添加辅助线:跟着Nature学作图:R语言ggplot2散点图和添加辅助线完整示例 - 知乎 (zhihu.com)
5.自定义绘制校准曲线教程:(28条消息) 手动绘制logistic回归预测模型校准曲线(Calibration curve)(1) 天桥下的卖艺者的博客-CSDN博客python 校准曲线





晨曦的文献复现系列传送门

1. 跟着Cell学单细胞!抄就对了!



晨曦的混合效应模型系列传送门

1. 你学习的线性回归真的能发science吗?大家都开始玩混合效应模型了

2. 真香预警!想发临床预测模型高分SCI?还得看这个方法!



晨曦的空间转录组笔记系列传送门

1. 拿去耍!!空间转录组实战来了!你在实验室的装逼利器!

2. 来领你的空间转录组救急包!你的装逼速成教程来了!

3. 新贵分析!单细胞联合空转分析,R语言手把手教学,你学废了吗?

4. 单细胞+代谢最新套路!高分文章的最爱,请低调使用!

5. 承包单细胞所有美图?这个R包就够了!



晨曦碎碎念系列传送门(未完待续...)
1. 想白嫖单细胞生信文章?这五大源头数据库,是你发文章的源泉!高频预警!你一定要收藏!
2. 盘活国自然的新思路!你研究的热点真的是热点吗?大数据帮你定位!
3. 好家伙!90%以上审稿人都会问到的问题,今天帮你解决!就是这么齐齐整整!
4. 没想到!生信分组还有这个大坑!你被坑过吗?!
5. 关于富集分析这件事,我有话想说。。。
6. 好御好高级!CNS级别美图是如何炼成的?看这篇就懂了!
7. 化繁为简!一文帮你彻底搞懂机器学习!想发高分文章,这篇是基础!
8. 你不知道的机器学习算法!关键时候能救命!
9. 致命!芯片&测序的联合到底能不能联合分析?审稿人最爱用这刁难你!
10. 躲不过的树!80%的生信SCI中都见过它!你真的搞懂了吗?
11. Python or R? 哪个更适用于生信发文章?深入浅出给你讲透!
12. 生信和抖音是一样的算法原理?不仅让你成瘾,也能发高分文章!
13. 跟3-5分SCI相比,CNS里的生信玩的可太花了!其实简单的离谱!
14. 揭秘!小鼠和人的免疫浸润分析有何区别?看这篇就够了!
15. 临床预测模型中的宠儿!最常见的机器学习 算法,没有之一!直接拿来用 !
16. 临床预测模型评价,不只有ROC,这个指标你遗漏了吗?
17. 肺肿瘤机器学习模板奉上!还不赶快产出2022年的你的第一篇SCI?!

18. 万字长文教你搞定机器学习!拿走不谢!

19. 揭秘!小鼠和人的免疫浸润分析有何区别?看这篇就够了!

20. 想做单细胞,样本不合格?这个方法帮你解决大难题!

21. 审稿人用的升级版免疫浸润分析,多一个X,CIBERSORT有啥差别?

22. 临床预测模型的天花板来了!看上去高大上,今天拆开揉碎手把手教你!

23. 单细胞差异分析不会做?这招极简教你搞定!

24. 平无奇小成本搞定单细胞测序?这个分析你一定要get!

25. 超酷炫!一文教你升级你的单细胞可视化!你心动了没?

26. 高分文章最爱的样本分型分析!强烈推荐!!!

27. 给你的R语言分析加个倍速键!炒鸡实用,强烈推荐!

28. 降维你还在用多种R包吗?快来试试这个宝藏R包吧!

29. 你还在为机器学习模型如何添加DCA而苦恼吗?快来看一下这篇教程吧~

30. 新一代配色R包,还不赶快升级你的配色方案?


晨曦单细胞文献阅读系列传送门

1. 非肿瘤单细胞分析模板已到位!眼馋单细胞的小伙伴快来看!手把手教你产出第一篇单细胞SCI!

2. 万字长文介绍单细胞高级分析!学会这个分析,搞定单细胞套路80%的难题!


3. 太顶了!学会这篇Nature分析,帮你搞定一篇高分SCI!



晨曦单细胞笔记系列传送门

1. 首次揭秘!不做实验也能发10+SCI,CNS级别空间转录组套路全解析(附超详细代码!)

2. 过关神助!99%审稿人必问,多数据集联合分析,你注意到这点了吗?

3. 太猛了!万字长文单细胞分析全流程讲解,看完就能发文章!建议收藏!(附代码)

4. 秀儿!10+生信分析最大的难点在这里!30多种方法怎么选?今天帮你解决!

5. 图好看易上手!没有比它更适合小白入手的单细胞分析了!老实讲,这操作很sao!

6. 毕业救星!这个R包在高分文章常见,实用!好学!

7. 我就不信了,生信分析你能绕开这个问题!今天一次性帮你解决!



晨曦从零开始学画图系列传送门
1. 看完这篇,彻底掌握生信画图精髓!超级实用,我不许你不知道!
2. 想让SCI看上去更高逼格?这些绘图技巧你一定要知道!
3. 3min掌握SCI配色神技,学会你就是组会汇报上最靓的仔!


晨曦单细胞数据库系列传送门

1. 宝儿,5min掌握一个单细胞数据库,今年国自然就靠它了!(附视频)

2. 审稿人返修让我补单细胞数据咋办?这个神器帮大忙了!

3. 想白嫖、想高大上、想有高大上的SCI?这个单细胞数据库,你肯定用得上!(配视频)

4. What? 扎克伯格投资了这个数据库?炒概念?跨界生信?

5. 不同物种也能合并做生信?给你支个妙招,让数据起死回生!

6. 零成本装逼指南!单细胞时代,教你用单细胞数据库巧筛基因,做科研!

7. 大佬研发的单细胞数据库有多强? 别眼馋 CNS美图了!零基础的小白也能10分钟学会!

8. 纯生信发14分NC的单细胞测序文章,这个北大的发文套路,你可以试下!实在不行,拿来挖挖数据也行!

9. 如何最短时间极简白嫖单细胞分析?不只是肿瘤方向!十分钟教你学会!

10. 生信数据挖掘新风口!这个单细胞免疫数据库帮你一网打尽了!SCI的发文源头!




END

撰文丨晨   曦
排版丨四金兄
主编丨小雪球



欢迎大家关注解螺旋生信频道-挑圈联靠公号~



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/147372
 
284 次点击