使用 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 围成的面积可以用来表征模型的优劣,且用面积作为指标来衡量模型优劣对指标某个部分的具体变化不敏感,稳定性更强。关于以上所有概念更为严谨和全面的定义和证明请参考周大佬的西瓜书。

相关文章
|
11天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
8天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
28 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
12天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
34 1
|
18天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
24 3
|
21天前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
61 1
|
23天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
28 1
|
24天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
23 1
|
1月前
|
人工智能 算法 测试技术
PAI 大语言模型评测平台现已支持裁判员模型评测
本文将为您介绍如何在 PAI 大语言模型评测平台,基于裁判员模型,评价开源模型或者微调后模型的性能。该功能限时免费,欢迎使用。
|
17天前
|
机器学习/深度学习 算法
探索机器学习模型的可解释性
【10月更文挑战第29天】在机器学习领域,一个关键议题是模型的可解释性。本文将通过简单易懂的语言和实例,探讨如何理解和评估机器学习模型的决策过程。我们将从基础概念入手,逐步深入到更复杂的技术手段,旨在为非专业人士提供一扇洞悉机器学习黑箱的窗口。