mars.learn.metrics.precision_recall_fscore_support#
- mars.learn.metrics.precision_recall_fscore_support(y_true, y_pred, *, beta=1.0, labels=None, pos_label=1, average=None, warn_for=('precision', 'recall', 'f-score'), sample_weight=None, zero_division='warn', session=None, run_kwargs=None)[来源]#
计算每个类的精确度、召回率、F-measure和支持度
精度是比率
tp / (tp + fp),其中tp是 真正例的数量,fp是假正例的数量。精度在直觉上是分类器不将负样本标记为正样本的能力。召回率是比率
tp / (tp + fn),其中tp是真正例的数量,fn是假负例的数量。召回率直观上是分类器找到所有正样本的能力。F-beta 分数可以解释为精确率和召回率的加权调和平均值,其中 F-beta 分数在 1 时达到最佳值,在 0 时达到最差值。
F-beta 得分更重视召回率而非精确率,权重因子为
beta。beta == 1.0表示召回率和精确率同等重要。支持度是每个类别在
y_true中出现的次数。如果
pos_label is None并且在二元分类中,这个函数返回平均精度、召回率和F-measure,如果average是'micro'、'macro'、'weighted'或'samples'之一。在用户指南中阅读更多内容。
- Parameters
y_true (一维数组-like,或标签指示数组 / 稀疏矩阵) – 真实的(正确的)目标值。
y_pred (一维数组或标签指示数组 / 稀疏矩阵) – 分类器返回的估计目标。
beta (float, 默认值为1.0) – F分数中回忆率与精准率的权衡强度。
labels (list, optional) – 当
average != 'binary'时要包含的标签集,以及如果average is None时的顺序。在数据中存在的标签可以被排除,例如计算多类平均值时忽略大多数负类,而在数据中不存在的标签将导致宏平均中的0个组件。对于多标签目标,标签是列索引。默认情况下,y_true和y_pred中的所有标签按顺序使用。pos_label (str 或 int, 默认为1) – 如果
average='binary'并且数据是二进制的,则报告该类。 如果数据是多类或多标签的,这将被忽略; 设置labels=[pos_label]和average != 'binary'将仅报告 该标签的分数。average (string, [None (default), 'binary', 'micro', 'macro', 'samples', 'weighted']) –
如果
None,将返回每个类别的分数。否则,这将确定在数据上执行的平均类型:'binary':仅报告由
pos_label指定的类别的结果。 这仅适用于目标 (y_{true,pred}) 为二元的情况。'micro':通过计算总的真正例、假阴性和假阳性来全局计算指标。
'macro':为每个标签计算指标,并找到它们的无权重平均值。这不考虑标签不平衡。
'weighted':为每个标签计算指标,并根据支持(每个标签的真实实例数量)找到它们的加权平均。这修改了“宏”以考虑标签不平衡;可能导致 F-score 不在精确度和召回率之间。
'samples':为每个实例计算指标,并找到它们的平均值(仅对多标签分类有意义,在这种情况下这与
accuracy_score()不同)。
warn_for (元组 或 集合, 仅供内部使用) – 这决定了在该函数仅用于返回其一个指标的情况下,会发出哪些警告。
sample_weight (类数组,形状 (n_samples,), 默认值=None) – 样本权重。
zero_division ("warn", 0或1, 默认="warn") –
- 设置当发生零除法时返回的值:
召回率:当没有正标签时
精准率:当没有正预测时
F-score:两者都没有
如果设置为“warn”,则表现为0,但也会产生警告。
- Returns
precision (浮点数(如果平均值不为None)或浮点数组,形状 = [n_unique_labels])
recall (浮点数(如果平均值不为None)或浮点数组,形状 = [n_unique_labels])
fbeta_score (浮点数(如果平均值不为None)或浮点数组,形状 = [n_unique_labels])
support (None(如果平均值不为None)或整型数组,形状 = [n_unique_labels]) – 每个标签在
y_true中出现的次数。
参考文献
示例
>>> import numpy as np >>> from mars.learn.metrics import precision_recall_fscore_support >>> y_true = np.array(['cat', 'dog', 'pig', 'cat', 'dog', 'pig']) >>> y_pred = np.array(['cat', 'pig', 'dog', 'cat', 'cat', 'dog']) >>> precision_recall_fscore_support(y_true, y_pred, average='macro') (0.22..., 0.33..., 0.26..., None) >>> precision_recall_fscore_support(y_true, y_pred, average='micro') (0.33..., 0.33..., 0.33..., None) >>> precision_recall_fscore_support(y_true, y_pred, average='weighted') (0.22..., 0.33..., 0.26..., None)
可以计算每个标签的精确度、召回率、F1分数和支持度,而不是取平均值:
>>> precision_recall_fscore_support(y_true, y_pred, average=None, ... labels=['pig', 'dog', 'cat']) (array([0. , 0. , 0.66...]), array([0., 0., 1.]), array([0. , 0. , 0.8]), array([2, 2, 2]))
备注
当
true positive + false positive == 0时,精确度未定义; 当true positive + false negative == 0时,召回率未定义。在这种情况下,默认情况下该度量将被设置为0,F-score也将如此,并且UndefinedMetricWarning将被引发。这种行为可以通过zero_division进行修改。