首页 > 后端开发 > Python教程 > 评估机器学习分类模型

评估机器学习分类模型

WBOY
发布: 2024-09-07 14:01:07
原创
1157 人浏览过

概要

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

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

不同型号如何选择? ​​

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

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

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

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

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

从上面我们可以推断出:

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

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

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

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

模型评估指标:

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

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

分类准确率

我们为本教程选择了皮马印第安人糖尿病数据集,其中包括 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% 的空精度和 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

结论:

  • 混淆矩阵为您提供更完整的图片您的分类器的执行情况
  • 还允许您计算各种分类指标,这些指标可以指导您的模型选择

以上是评估机器学习分类模型的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板