Sklearn 中的 Accuracy_Score

2024 年 8 月 29 日 | 5 分钟阅读

在数据科学工作流程中,使用适当的指标来衡量模型的准确性是一个至关重要的阶段。在本教程中,我们将学习两种计算源样本预测类别准确性的方法:手动计算和使用 Python 的 scikit-learn 库。

以下是本教程中讨论的主题概述。

  • 手动计算 accuracy_score
  • 使用 scikit learn 计算 accuracy_score
  • Scikit learn accuracy_score 示例
  • Scikit learn accuracy_score 如何工作?

什么是准确率?

准确率是用于计算分类模型性能的广泛使用的指标之一。准确率表示我们模型成功预测的标签的百分比。例如,如果我们的模型准确地对 100 个标签中的 80 个进行了分类,那么它的准确率将是 0.80。

创建计算准确率分数的功能

假设我们已经有了样本的真实标签以及模型预测的标签,让我们创建一个 Python 函数来计算预测值的准确率分数。

代码

上述函数接受分类模型的预测标签和样本的真实标签作为其参数,并计算准确率分数。在这里,我们并行迭代真实的标签和预测的标签对,以记录正确预测的数量。然后,我们将该数量除以标签总数来计算准确率分数。

我们现在将把这个函数应用到一个样本上。

代码

输出

0.9777777777777777

对于支持向量分类模型的预测,我们得到的准确率分数为 0.978。

请注意,使用 numpy 数组进行向量化相等性计算可以使上述代码更有效。

使用 Sklearn 的 accuracy_score() 计算准确率

sklearn.metrics 的 accuracy_score() 方法接受样本的真实标签和模型预测的标签作为其参数,并计算准确率分数,该分数是一个浮点值,也可以用于在 Python 中获得准确率分数。sklearn.metrics 类中有许多有用的函数可以计算常见的评估指标。让我们使用 sklearn 的 accuracy_score() 函数,使用与前面相同的样本数据集来计算支持向量分类模型的准确率分数。

sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)

我们使用此函数来计算分类准确率。此方法在多标签分类中计算子集准确率;数据集中预测的标签子集必须与 y_true 中实际的数据集标签精确匹配。

参数

  1. y_true (一维类数组或指示标签/稀疏矩阵的数组): 这是给定样本的真实标签。
  2. y_pred (一维类数组或指示标签/稀疏矩阵的数组): 分类模型返回的预测标签。
  3. normalize (布尔值,默认为 True): 如果为 False,则给出成功分类的预测样本的数量。如果为 True,则返回正确分类的预测样本的比例。
  4. sample_weight (形状为 (n,) 的类数组,默认为 None): 样本权重。

返回值

  1. score (浮点数): 如果 normalise == True,则给出成功分类样本的比例 (浮点数);否则,它返回成功分类的预测样本的数量 (整数)。对于 normalise == True,1 表示 100% 准确率;对于 normalise == False,它表示提供的样本数量。

Accuracy_score 示例

代码

输出

0.9777777777777777

在对多个标签使用二元标签指示符时

代码

输出

0.5

Scikit learn accuracy_score 如何工作

sklearn.metrics 包的 accuracy_score 方法在多标签分类中分配子集准确率。

要求模型对给定样本预测的标签与样本的真实标签完全匹配。

准确率描述了模型在所有类中的行为。如果所有类都具有可比的重要性,那么它是有用的。

通过将正确预测的数量除以样本总数或预测总数来确定模型的准确率。

代码

  1. 下面的代码导入了两个库。我们导入 sklearn.metrics 用于预测模型准确率,并导入 numpy 库。
  2. 样本的真实值为 y_true = ["1", "1", "0", "0", "1", "1", "0"]。
  3. ["1", "1", "0", "0", "1", "1", "0"] 这些是模型对样本数据的预测值。
  4. 使用 Accuracy = ( matrix[0][0] + matrix[-1][-1] ) / numpy.sum(matrix) 来获取分类模型的准确率分数。
  5. 使用 print(accuracy) 显示准确率分数作为输出。

代码

输出

Confusion Matrix: 
 [[2 2]
 [3 0]]
0.2857142857142857

因此,在本教程中,我们学习了 Python 中的 scikit-learn accuracy_score,并检查了一些实现示例。