sklearn.metrics.f1_score 使用方法

原网站:sklearn官网

使用sklearn计算 F1 score

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

计算F1分数,也称为平衡F分数或F测度

F1分数可以解释为精度和查全率的加权平均值,其中F1分数在1时达到最佳值,在0时达到最差值。精度和查全率对F1分数的相对贡献相等。F1分数的公式为:

F1 = 2 * (precision * recall) / (precision + recall)

在多类别和多标签的情况下,这是每个类别的F1分数的平均值,其权重取决于average 参数。

参数说明:

y_true:1d数组,或标签指示符数组/稀疏矩阵
		基本事实(正确)目标值。

y_pred:1d数组,或标签指示符数组/稀疏矩阵
		分类器返回的估计目标。

labels:list,optional
		包括when的标签集,以及if的顺序。可以排除数据中存在的标
		签,例如,以忽略多数否定类别的方式计算多类平均值,而数
		据中不存在的标签将导致宏平均值中的0成分。对于多标签目
		标,标签是列索引。默认情况下,和 中的所有标签均按排序顺
		序使用。
		average != 'binary'average is Noney_truey_pred

pos_label:strint,默认值为1
	 	   要报告是否average='binary'以及数据是否为二进制的类。如果数据是
		   多类或多标签的,则将被忽略;设置,labels=[pos_label]并且只会报
		   告该标签的得分。average != 'binary'

average:string, [None, ‘binary’ (default), ‘micro’, ‘macro’, ‘samples’, ‘weighted’]
		 对于多类/多标签目标,此参数是必需的。如果为None,则返
		 回每个班级的分数。否则,这将确定对数据执行的平均类型:

	'binary':仅报告由指定的类的结果pos_label。
			  仅在目标(y_{true,pred})为二进制时适用。

	'micro':通过计算正确,错误和否定的总数来全局计算指标。

	'macro':计算每个标签的指标,并找到其未加权平均值。
			 这没有考虑标签不平衡。

	'weighted':计算每个标签的指标,并找到其平均权重(受支持)
				(每个标签的真实实例数)。
			    这改变了“宏观”以解决标签的不平衡。
			    这可能导致F得分不在精确度和召回率之间。

	'samples':计算每个实例的指标,并找到其平均值
			  (仅对不同于的多标签分类有意义 accuracy_score)。

sample_weight:array-like of shape (n_samples,), default=None
			   样品重量。

zero_division:“warn”, 0 or 1, default=”warn”
			   设置除法为零(即所有预测和标签均为负)时
			   返回的值。如果设置为“ warn”,则该值为0,
			   但也会发出警告。

返回值:

f1_score:float or array of float, shape = [n_unique_labels]
		  二进制分类中的阳性类别的F1分数,
		  或者对于多类别任务,每个类别的F1分数的加权平均值。

Notes
When true positive + false positive == 0, precision is undefined; When true positive + false negative == 0, recall is undefined. In such cases, by default the metric will be set to 0, as will f-score, and UndefinedMetricWarning will be raised. This behavior can be modified with zero_division.

举例:

>>> from sklearn.metrics import f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')
0.26...
>>> f1_score(y_true, y_pred, average='micro')
0.33...
>>> f1_score(y_true, y_pred, average='weighted')
0.26...
>>> f1_score(y_true, y_pred, average=None)
array([0.8, 0. , 0. ])
>>> y_true = [0, 0, 0, 0, 0, 0]
>>> y_pred = [0, 0, 0, 0, 0, 0]
>>> f1_score(y_true, y_pred, zero_division=1)
1.0...

版权声明:本文为weixin_46072771原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。