使用 scikit-learn 玩转机器学习——模型评价(下)

简介: 对于分类模型来说,我们一般会用模型的准确率来进行模型的评价,模型的准确率是用预测正确的样本数除以模型的总数。如果一个模型的准确率达到了95%,那么在我们的印象中,是不是这个模型表现的还挺不错的,那如果达到了99%呢,岂不是更好?

精准率是TP值与TP值和FP值的和的比值,在上例中表示预测对的中奖人数占按预测应该中奖的人数的比值,表示如下:



召回率是TP值与TP值和FN值的和的比值,在上例中表示预测对的中奖人数占实际中奖人数的比率,表示如下:



然后我们可以得到我们所据上述例子中的混淆矩阵:

31.jpg根据精准率和召回率的定义可得, 出现除0情况而无意义,,召回率为0,根据召回率的定义也可知,召回率表示的是对于特定的目标群,预测正确的比率。完美的解决了准确率在偏斜数据中不作为的问题。


在不同的应用场景下,我们通常会关注不同的指标,因为有些时候精准率更为重要,有些时候召回率更为重要。为了同时权衡这两个指标的重要性,就出现了 F1 Score,表达式如下:



由上式我们可以看出,F1 Score 其实就是精准率与召回率的调和平均值,因为召回率和精准率都大于0,由极限的性质可知,只有精准率和召回率都打的时候,F1 Score 才会比较大。


说到 ROC 曲线(Receiver Operating Characteristic, 受试者工作特性曲线),就得从 TPR 和 FPR,其分别表示 被正确预测的目标类别占目标类别的比率,和被错误的预测为目标类表占非目标类别的比率。其分别对应的表格和表达式如下:


32.jpg33.jpg


OC 曲线源于二战中用于敌机检测的雷达信号分析技术,后来才被引入机器学习领域。在进行机器学习模型的比较时,如果一个模型的 ROC 曲线被另一个模型的曲线完全包住,则可断言后者的性能优于前者;若两个模型的 ROC 曲线发生交叉,则在一般情况下很难判定2个模型孰优孰劣,这时,一种较为合理的评比标准便是比较这两个 ROC 曲线之下的面积,即 AUC(Area under curve)。


接下来我们用代码来具体的实现下相关的评判标准和判别式。


引入必要的包 -> 调用数据集 -> 使数据集中不同类别数量偏斜 -> 分离训练、测试数据集 -> 实例化一个逻辑回归模型 -> 预测并求出模型准确率

34.jpg


为增加我们对上述有关术语和评判标准的感性认识,我们具体实现了下一些函数,如下:

35.jpg36.jpg


当然了,如果每次使用精准率和召回率时都要自己亲手撸出来可能骚微还是有一些的麻烦,不过 贴心的 scikit-learn 找就为我们准备好了一切,在 metrics 中封装了所有我们在上述实现的度量,如下是调用演示:

37.jpg

对于机器学习模型的性能而言,不光是各样本的特征系数,而且阈值(或称之为截距)的取法对其也有着重要的影响。如下代码是用于绘制精准率与召回率和阈值取值的关系,并绘出其图形:

38.jpg


PR 曲线对研究机器学习模型也有着重要的作用,我们也可以从 scikit-learn 中调用相关的函数来绘制 PR 曲线,如下:

39.jpg


绘制出 ROC 曲线:

40.jpg

ROC 曲线和 PR 曲线有着很强的相似性,因为这两图的各自的两个指标的取值范围都是0到1,因此都可以用曲线与 y=0 围成的面积可以用来表征模型的优劣,且用面积作为指标来衡量模型优劣对指标某个部分的具体变化不敏感,稳定性更强。关于以上所有概念更为严谨和全面的定义和证明请参考周大佬的西瓜书。

相关文章
|
1天前
|
机器学习/深度学习 Python
验证集的划分方法:确保机器学习模型泛化能力的关键
本文详细介绍了机器学习中验证集的作用及其划分方法。验证集主要用于评估模型性能和调整超参数,不同于仅用于最终评估的测试集。文中描述了几种常见的划分方法,包括简单划分、交叉验证、时间序列数据划分及分层抽样划分,并提供了Python示例代码。此外,还强调了在划分数据集时应注意随机性、数据分布和多次实验的重要性。合理划分验证集有助于更准确地评估模型性能并进行有效调优。
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习模型之深度神经网络的特点
深度神经网络(Deep Neural Networks, DNNs)是一类机器学习模型,通过多个层级(层)的神经元来模拟人脑的工作方式,从而实现复杂的数据处理和模式识别任务。
7 1
|
10天前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
9天前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
80 1
|
10天前
|
机器学习/深度学习 算法 数据挖掘
|
11天前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
34 0
|
11天前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
24 0
|
11天前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
23 0
|
11天前
|
机器学习/深度学习 人工智能 自动驾驶
探索AI的魔法:用Python构建你的第一个机器学习模型
【8月更文挑战第31天】在这个数字时代,人工智能(AI)已经渗透到我们生活的方方面面。从智能助手到自动驾驶汽车,AI正在改变世界。本文将带你走进AI的世界,通过Python编程语言,一步步教你如何构建第一个机器学习模型。无论你是编程新手还是有经验的开发者,这篇文章都将为你打开新世界的大门,让你体验到创造智能程序的乐趣和成就感。所以,让我们一起开始这段激动人心的旅程吧!
|
11天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow Serving 部署指南超赞!让机器学习模型上线不再困难,轻松开启高效服务之旅!
【8月更文挑战第31天】TensorFlow Serving是一款高性能开源服务系统,专为部署机器学习模型设计。本文通过代码示例详细介绍其部署流程:从安装TensorFlow Serving、训练模型到配置模型服务器与使用gRPC客户端调用模型,展示了一站式模型上线解决方案,使过程变得简单高效。借助该工具,你可以轻松实现模型的实际应用。
17 0