返回介绍

数学基础

统计学习

深度学习

工具

Scala

二、性能度量

发布于 2023-07-17 23:38:23 字数 13043 浏览 0 评论 0 收藏 0

  1. scikit-learn中有三种方法来评估estimator 的预测性能:

    • estimator.score方法。
    • 通过使用model_selection中的模型评估工具来评估,如model_selection.cross_val_score等方法。
    • 通过scikit-learnmetrics模块中的函数来评估estimator 的预测性能。这里重点讲解这些函数。
  2. metrics模块中的性能评价函数的通用参数:

    • y_true:一个数组,给出了真实的标记集合。
    • y_pred:一个数组,给出了预测的标记集合。
    • sample_weight:一个浮点数,给出了样本权重。默认每个样本的权重为 1。

2.1 分类问题性能度量

2.1.1 accuracy_score

  1. accuracy_score函数用于计算分类结果的准确率,其原型为:

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

    返回值:如果normalizeTrue,则返回准确率;如果normalizeFalse,则返回正确分类的数量。

    参数:

    • y_true:真实的标记集合。

    • y_pred:预测的标记集合。

    • normalize:一个布尔值,指示是否需要归一化结果。

      • 如果为True,则返回分类正确的比例(准确率)。
      • 如果为False,则返回分类正确的样本数量。
    • sample_weight:样本权重,默认每个样本的权重为 1 。

2.1.2 precision_score

  1. precision_score函数用于计算分类结果的查准率,其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.precision_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)

    返回值:查准率。即预测结果为正类的那些样本中,有多少比例确实是正类。

    参数:

    • y_true:真实的标记集合。

    • y_pred:预测的标记集合。

    • labels:一个列表。当average 不是'binary' 时使用。

      • 对于多分类问题,它指示:将计算哪些类别。不在labels 中的类别,计算macro precision 时其成分为 0 。
      • 对于多标签问题,它指示待考察的标签的索引。
      • 除了average=None 之外,labels 的元素的顺序也非常重要。
      • 默认情况下,y_truey_pred 中所有的类别都将被用到。
    • pos_label:一个字符串或者整数,指定哪个标记值属于正类。

      • 如果是多分类或者多标签问题,则该参数被忽略。
      • 如果设置label=[pos_label] 以及average!='binary' 则会仅仅计算该类别的precision
    • average:一个字符串或者None,用于指定二分类或者多类分类的precision 如何计算。

      • 'binary':计算二类分类的precision。 此时由pos_label 指定的类为正类,报告其precision

        它要求y_true、y_pred 的元素都是0,1

      • 'micro':通过全局的正类和父类,计算precision

      • 'macro':计算每个类别的precision,然后返回它们的均值。

      • 'weighted':计算每个类别的precision,然后返回其加权均值,权重为每个类别的样本数。

      • 'samples':计算每个样本的precision,然后返回其均值。

        该方法仅仅对于多标签分类问题有意义。

      • None:计算每个类别的precision,然后以数组的形式返回每个precision

    • sample_weight:样本权重,默认每个样本的权重为 1

2.1.3 recall_score

  1. recall_score函数用于计算分类结果的查全率,其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)

    返回值:查全率。即真实的正类中,有多少比例被预测为正类。

    参数:参考precision_score

2.1.4 f1_score

  1. f1_score函数用于计算分类结果的 $ MathJax-Element-16 $ 值,其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)

    返回值: $ MathJax-Element-16 $ 值。即查准率和查全率的调和均值。

    参数:参考precision_score

2.1.5 fbeta_score

  1. fbeta_score函数用于计算分类结果的 $ MathJax-Element-14 $ 值,其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.fbeta_score(y_true, y_pred, beta, labels=None, pos_label=1, average='binary', sample_weight=None)

    返回值: $ MathJax-Element-14 $ 值。

    参数:

    • beta: $ MathJax-Element-15 $ 值
    • 其它参数参考precision_score

2.1.6 classification_report

  1. classification_report函数以文本方式给出了分类结果的主要预测性能指标。其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.classification_report(y_true, y_pred, labels=None, target_names=None, sample_weight=None, digits=2)

    返回值:一个格式化的字符串,给出了分类评估报告。

    参数:

    • y_true:真实的标记集合。
    • y_pred:预测的标记集合。
    • labels:一个列表,指定报告中出现哪些类别。
    • target_names:一个列表,指定报告中类别对应的显示出来的名字。
    • digits:用于格式化报告中的浮点数,保留几位小数。
    • sample_weight:样本权重,默认每个样本的权重为 1
  2. 分类评估报告的内容如下,其中:

    • precision列:给出了查准率。它依次将类别 0 作为正类,类别 1 作为正类...

    • recall列:给出了查全率。它依次将类别 0 作为正类,类别 1 作为正类...

    • recall列:给出了 $ MathJax-Element-16 $ 值。

    • support列:给出了该类有多少个样本。

    • avg / total行:

      • 对于precision,recall,recall,给出了该列数据的算术平均。
      • 对于support列,给出了该列的算术和(其实就等于样本集总样本数量)。
    
    
    xxxxxxxxxx
    Classification Report: precision recall f1-score support class_0 0.62 1.00 0.77 5 class_1 1.00 0.40 0.57 5 avg / total 0.81 0.70 0.67 10

2.1.7 confusion_matrix

  1. confusion_matrix函数给出了分类结果的混淆矩阵。其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None)

    返回值:一个格式化的字符串,给出了分类结果的混淆矩阵。

    参数:参考classification_report

  2. 混淆矩阵的内容如下,其中 $ MathJax-Element-17 $ 表示真实标记为 $ MathJax-Element-18 $ 但是预测为 $ MathJax-Element-19 $ 的样本的数量。

    
    
    xxxxxxxxxx
    Confusion Matrix: [[5 0] [3 2]]

2.1.8 precision_recall_curve

  1. precision_recall_curve函数用于计算分类结果的P-R曲线。其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.precision_recall_curve(y_true, probas_pred, pos_label=None, sample_weight=None)

    返回值:一个元组,元组内的元素分别为:

    • P-R曲线的查准率序列。该序列是递增序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的查准率。
    • P-R曲线的查全率序列。该序列是递减序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的查全率。
    • P-R曲线的阈值序列thresholds。该序列是一个递增序列,给出了判定为正例时的正类概率的阈值。

    参数:

    • y_true:真实的标记集合。
    • probas_pred:每个样本预测为正类的概率的集合。
    • pos_label:正类的类别标记。
    • sample_weight:样本权重,默认每个样本的权重为 1。

2.1.9 roc_curve

  1. roc_curve函数用于计算分类结果的ROC曲线。其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True)

    返回值:一个元组,元组内的元素分别为:

    • ROC曲线的 $ MathJax-Element-20 $ 序列。该序列是递增序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的假正例率。
    • ROC曲线的 $ MathJax-Element-21 $ 序列。该序列是递增序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的真正例率。
    • ROC曲线的阈值序列thresholds。该序列是一个递减序列,给出了判定为正例时的正类概率的阈值。

    参数:

    • y_true:真实的标记集合。
    • y_score:每个样本预测为正类的概率的集合。
    • pos_label:正类的类别标记。
    • sample_weight:样本权重,默认每个样本的权重为 1。
    • drop_intermediate:一个布尔值。如果为True,则抛弃某些不可能出现在ROC曲线上的阈值。

2.1.10 roc_auc_score

  1. roc_auc_score函数用于计算分类结果的ROC曲线的面积AUC。其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.roc_auc_score(y_true, y_score, average='macro', sample_weight=None)

    返回值:AUC值。

    参数:参考 roc_curve

2.2 回归问题性能度量

2.2.1 mean_absolute_error

  1. mean_absolute_error函数用于计算回归预测误差绝对值的均值(mean absolute error:MAE),其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average')

    返回值:预测误差绝对值的均值。

    参数:

    • y_true:真实的标记集合。

    • y_pred:预测的标记集合。

    • multioutput:指定对于多输出变量的回归问题的误差类型。可以为:

      • 'raw_values':对每个输出变量,计算其误差 。
      • 'uniform_average':计算其所有输出变量的误差的平均值。
    • sample_weight:样本权重,默认每个样本的权重为 1。

2.2.2 mean_squared_error

  1. mean_squared_error函数用于计算回归预测误差平方的均值(mean square error:MSE),其原型为:

    
    
    xxxxxxxxxx
    sklearn.metrics.mean_squared_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average')

    返回值:预测误差的平方的平均值。

    参数:参考mean_absolute_error

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文