”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 评估机器学习分类模型

评估机器学习分类模型

发布于2024-11-05
浏览:429

大纲

  • 模型评估的目标是什么?
  • 模型评估的目的是什么,有哪些 常见的评估程序?
  • 分类准确率有什么用,它的作用是什么 限制?
  • 混淆矩阵如何描述一个 分类器?
  • 可以从混淆矩阵计算哪些指标?

T模型评估的目标是回答问题;

不同型号如何选择?

评估机器学习的过程有助于确定模型的应用可靠性和有效性。这涉及评估不同的因素,例如其性能、指标以及预测或决策的准确性。

无论您选择使用什么模型,您都需要一种在模型之间进行选择的方法:不同的模型类型、调整参数和功能。此外,您还需要模型评估程序来估计模型对未见过的数据的泛化能力。最后,您需要一个评估程序来与其他程序配合以量化您的模型性能。

在我们继续之前,让我们回顾一下一些不同的模型评估程序及其运作方式。

模型评估程序及其运作方式。

  1. 对相同数据进行训练和测试
    • 奖励过于复杂的模型,这些模型“过度拟合”训练数据并且不一定具有泛化能力
  2. 训练/测试分割
    • 将数据集分成两部分,以便模型可以在不同的数据上进行训练和测试
    • 更好地估计样本外表现,但仍然是“高方差”估计
    • 因其速度、简单性和灵活性而有用
  3. K 折交叉验证
    • 系统地创建“K”个训练/测试分组并将结果平均在一起
    • 更好地估计样本外表现
    • 运行速度比训练/测试拆分慢“K”倍。

从上面我们可以推断出:

  • 对相同数据进行训练和测试是过度拟合的一个典型原因,在这种情况下,您构建的模型过于复杂,无法泛化到新数据,而且实际上没有用。

  • Train_Test_Split 可以更好地估计样本外性能。

  • 通过系统地进行 K 次训练测试分割并将结果平均在一起,K 折交叉验证效果更好。

总而言之,train_tests_split 由于其速度和简单性,对于交叉验证来说仍然是有利可图的,这就是我们将在本教程中使用的内容。

模型评估指标:

您始终需要一个评估指标来配合您选择的程序,并且您对指标的选择取决于您要解决的问题。对于分类问题,可以使用分类精度。但我们将在本指南中重点关注其他重要的分类评估指标。

在我们学习任何新的评估指标之前'让我们回顾一下分类准确性,并讨论它的优点和缺点。

分类准确率

我们为本教程选择了 Pima Indians Diabetes 数据集,其中包括 768 名患者的健康数据和糖尿病状况。

Evaluating A Machine Learning Classification Model

让我们读取数据并打印前5行数据。如果患者患有糖尿病,则标签列表示为 1,如果患者没有患有糖尿病,则标签列表示为 0,我们要回答的问题是:

问题: 我们可以根据患者的健康测量结果预测其糖尿病状况吗?

我们定义特征度量 X 和响应向量 Y。我们使用 train_test_split 将 X 和 Y 分成训练集和测试集。

Evaluating A Machine Learning Classification Model

接下来,我们在训练集上训练逻辑回归模型。在拟合步骤中,logreg 模型对象正在学习 X_train 和 Y_train 之间的关系。最后我们对测试集进行类别预测。

Evaluating A Machine Learning Classification Model

Evaluating A Machine Learning Classification Model

现在,我们已经对测试集进行了预测,我们可以计算分类准确率,简单来说就是正确预测的百分比。

Evaluating A Machine Learning Classification Model

但是,每当您使用分类准确性作为评估指标时,将其与空准确性进行比较非常重要,后者是通过始终预测最频繁的类别可以获得的准确性。

Evaluating A Machine Learning Classification Model

空准确率回答了问题;如果我的模型能够 100% 地预测主要类别,那么它正确的概率是多少?在上面的场景中,y_test 的 32% 为 1(个)。换句话说,预测患者患有糖尿病的愚蠢模型的正确率是 68%(即零)。这提供了一个基线,我们可能希望根据该基线来衡量逻辑回归模型。

当我们比较 68% 的 Null 准确率和 69% 的模型准确率时,我们的模型看起来不太好。这表明分类准确性作为模型评估指标的一个弱点。分类准确性并不能告诉我们有关测试测试的基本分布的任何信息。

总之:

  • 分类准确率是最容易理解的分类指标
  • 但是,它不会告诉您响应值的潜在分布
  • 并且,它不会告诉您分类器正在产生什么“类型”错误

现在让我们看看混淆矩阵。

混淆矩阵

混淆矩阵是描述分类模型性能的表格。
它有助于帮助您了解分类器的性能,但它不是模型评估指标;所以你不能告诉 scikit learn 选择具有最佳混淆矩阵的模型。然而,有很多指标可以从混淆矩阵中计算出来,并且可以直接用于在模型之间进行选择。

Evaluating A Machine Learning Classification Model

  • 测试集中的每个观察结果都在恰好一个框中表示
  • 这是一个 2x2 矩阵,因为有 2 个响应类别
  • 此处显示的格式不是通用

让我们解释一下它的一些基本术语。

  • 真阳性(TP):我们正确预测他们确实患有糖尿病
  • 真阴性(TN):我们正确预测他们没有患有糖尿病
  • 误报 (FP):我们错误地预测他们确实患有糖尿病(“I 型错误”)
  • 假阴性(FN):我们错误地预测他们没有患有糖尿病(“II型错误”)

让我们看看如何计算指标

Evaluating A Machine Learning Classification Model

Evaluating A Machine Learning Classification Model

Evaluating A Machine Learning Classification Model

综上所述:

  • 混淆矩阵为您提供更完整的图片您的分类器的执行情况
  • 还允许您计算各种分类指标,这些指标可以指导您的模型选择
版本声明 本文转载于:https://dev.to/chris22ozor/evaluating-a-machine-learning-classification-model-4cd8?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-04-12
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-04-12
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-04-12
  • 如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    postgresql:为每个唯一标识符提取最后一行,在Postgresql中,您可能需要遇到与在数据库中的每个不同标识相关的信息中提取信息的情况。考虑以下数据:[ 1 2014-02-01 kjkj 在数据集中的每个唯一ID中检索最后一行的信息,您可以在操作员上使用Postgres的有效效率: ...
    编程 发布于2025-04-12
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-04-12
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-04-12
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-04-12
  • Properties.Settings.Default应用设置存储位置揭秘
    Properties.Settings.Default应用设置存储位置揭秘
    [2 理解properties.settings.default存储位置 c#'s properties.settings.default 对象简化了定义,访问和保存应用程序设置的过程。 知道存储位置对于手动配置调整和调试等任务至关重要。 这些存储在特定于用户的应用程序设置文件夹中...
    编程 发布于2025-04-12
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-04-12
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-04-12
  • 如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    在Visual Studio 2012 尽管已安装了MySQL Connector v.6.5.4,但无法将MySQL数据库添加到实体框架的“ DataSource对话框”中。为了解决这一问题,至关重要的是要了解MySQL连接器v.6.5.5及以后的6.6.x版本将提供MySQL的官方Visual...
    编程 发布于2025-04-12
  • 如何在Java的全屏独家模式下处理用户输入?
    如何在Java的全屏独家模式下处理用户输入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    编程 发布于2025-04-12
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在Silverlight应用程序中,尝试使用LINQ建立LINQ连接以错误而实现的数据库”,无法找到查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中...
    编程 发布于2025-04-12
  • ES6实战:增强对象字面量
    ES6实战:增强对象字面量
    ES6 对象字面量增强:简化 JavaScript 对象操作 ES6 引入的增强型对象字面量特性显着简化了 JavaScript 中的对象处理,主要体现在简写属性名、简写方法名和计算属性名等方面。 简写属性名使属性定义更加简洁;简写方法名简化了方法定义语法;而计算属性名则允许根据变量值动态创建属...
    编程 发布于2025-04-12
  • 揭秘mysql_real_escape_string能否防SQL注入
    揭秘mysql_real_escape_string能否防SQL注入
    MySQL_REAL_ESCAPE_STRING的限制 MySQL_REAL_ESCAPE_STRING在PHP中曾在php中曾被批评,因为他们没有为SQL注射攻击提供了不全面的攻击问题,这些问题是在潜在的攻击问题上的全面保护。尽管有些人认为该功能的用法不正确,但其他人则提出了对其固有局限性的担...
    编程 发布于2025-04-12

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3