sklearn.metrics.precision_score
是 Scikit-learn 中计算分类准确率(Precision)的函数,用于计算分类器对正样本的Precision得分。
以下是 precision_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)
函数的参数说明:
y_true
:实际数据的目标变量,即真实值,类型为二维数组或类数组型数据,形状为(n_samples,)。n_samples 表示数据样本数y_pred
:预测目标变量,即分类器预测出来的样本标签值,类型为二维数组或类数组型数据,形状为(n_samples,)。n_samples 表示数据样本数labels
:算法预测的分类种类,类型为一个数组pos_label
:算法预测的正类别,type(int) 或 str,正类别必须是元素唯一的列表或数组,对于二进制分类pos_label默认为1average
:用于计算返回的得分值的类型,type(str),默认值为’binary’,可选参数有’binary’、’micro’、’macro’、’weighted’和Nonesample_weight
:示例权重,类型为一维数组或 None,可为每个样本设置不同的权重值,样本权重值 1 表示正常,比 1 大或小的权重更重或轻
这个函数返回的是精确度得分。理论上,精确度得分越高,说明分类器对于正样本的判断越高效。
下面我们以实例进行说明:
# 示例 1
from sklearn.metrics import precision_score
y_true = [1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 0, 1, 0, 1, 1, 1]
precision_score(y_true, y_pred, average='binary')
输出结果为0.5
。
这里的结果说明该分类器对于正样本的判断并不高。同时,我们还可以不采用默认的average=’binary’参数选项,而选择’macro‘模式:
# 示例 2
from sklearn.metrics import precision_score
y_true = [1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 0, 1, 0, 1, 1, 1]
precision_score(y_true, y_pred, average='macro')
输出结果为0.4166666666666667
。
这个结果告诉我们,在所有分类样本中,分类准确率的平均值只有0.4,这可能表明分类器需要改进或则需要改变。
在实际使用过程中,precision_score
函数的正确应用传递正确的标签很重要。同时,根据样本分布的不同,以不同形式应用这个函数也很重要。