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

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

    2.1.1 accuracy_score

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

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

      参数:

      • y_true:真实的标记集合。

      • y_pred:预测的标记集合。

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

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

    2.1.2 precision_score

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

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

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

      参数:

      • y_true:真实的标记集合。

      • y_pred:预测的标记集合。

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

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

        • 如果是多分类或者多标签问题,则该参数被忽略。
      • average:一个字符串或者None,用于指定二分类或者多类分类的precision 如何计算。

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

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

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

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

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

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

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

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

    2.1.3 recall_score

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

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

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

      参数:参考precision_score

    2.1.4 f1_score

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

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

      返回值:二、性能度量 - 图1 值。即查准率和查全率的调和均值。

      参数:参考precision_score

    2.1.5 fbeta_score

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

      返回值:二、性能度量 - 图2 值。

      参数:

      • beta: 值
      • 其它参数参考precision_score

    2.1.6 classification_report

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

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

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

      参数:

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

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

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

      • recall列:给出了 二、性能度量 - 图3 值。

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

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

    2.1.7 confusion_matrix

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

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

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

      参数:参考classification_report

    2. 混淆矩阵的内容如下,其中 表示真实标记为 二、性能度量 - 图4 但是预测为 的样本的数量。

    2.1.8 precision_recall_curve

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

      1. 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曲线。其原型为:

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

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

      • ROC曲线的 二、性能度量 - 图5 序列。该序列是递增序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的假正例率。
      • ROC曲线的 序列。该序列是递增序列,序列第 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。其原型为:

      1. 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),其原型为:

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

      参数:

      • 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),其原型为:

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

      参数:参考 。