maxframe.learn.metrics.precision_recall_fscore_support#
- maxframe.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', execute=False, session=None, run_kwargs=None)[源代码]#
计算每个类的精度、召回率、F值和支持度
精度是比率
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且是二分类任务,当average是'micro'、'macro'、'weighted'或'samples'之一时,此函数返回平均精度、召回率和 F 值。更多内容请参见 用户指南。
- 参数:
y_true (1d array-like, or label indicator array / sparse matrix) -- 真实(正确)的目标值。
y_pred (1d array-like, or label indicator array / sparse matrix) -- 分类器返回的估计目标。
beta (float, 1.0 by default) -- F 分数中召回率与精度的权重比。
labels (list, optional) -- 当
average != 'binary'时要包括的标签集,以及当average is None时的顺序。数据中存在的标签可以被排除,例如在计算多类平均值时忽略多数负类;而在数据中不存在的标签在宏平均时将导致 0 成分。对于多标签目标,标签是列索引。默认情况下,y_true和y_pred中的所有标签都按排序后的顺序使用。pos_label (str or int, 1 by default) -- 当
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':为每个标签计算指标,并根据支持度(每个标签的真实实例数)进行加权平均。这会调整“macro”以考虑类别不平衡;它可能导致 F 分数不在精度和召回率之间。'samples':为每个样本计算指标,并求其平均值(仅对多标签分类有意义,此时不同于accuracy_score())。warn_for (tuple or set, for internal use) -- 这确定在使用此函数仅返回其中一个指标时将发出哪些警告。
sample_weight (array-like of shape (n_samples,), default=None) -- 样本权重。
zero_division ("warn", 0 or 1, default="warn") -- 设置在零除时返回的值: - recall:当没有正标签时 - precision:当没有正预测时 - f-score:两者皆是 如果设置为 "warn",则行为与 0 相同,但也会引发警告。
- 返回:
precision (float (如果 average 不为 None) 或浮点数组,形状 = [n_unique_labels])
recall (float (如果 average 不为 None) 或浮点数组,形状 = [n_unique_labels])
fbeta_score (float (如果 average 不为 None) 或浮点数组,形状 = [n_unique_labels])
support (None (如果 average 不为 None) 或整数数组,形状 = [n_unique_labels]) ——
y_true中每个标签的出现次数。
引用
示例
>>> import numpy as np >>> from maxframe.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 分数也是如此,并会引发UndefinedMetricWarning。此行为可以通过zero_division修改。