目标:获取precision
和recall
值,仅针对单一类别(y_true
= 1
)。
背景:我查看了http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html#sklearn.metrics.precision_recall_curve,其中提到pos_label
是positive class
的标签,默认设置为1
。
问题:
1) 如果我只想获取我的positive class
的precision
和recall
(在这种情况下y_true
= 1
),我应该保持pos_label
= 1
,还是将其改为pos_label = 0
?
2) 或者是否有更好的方法来实现我的目标?
下面展示的是当pos_label
= 0
时的代码:
import numpy as npfrom sklearn.metrics import precision_recall_fscore_supporty_true = np.array(['0', '1', '1', '0', '1'])y_pred = np.array(['1', '0', '1', '0', '1'])out = precision_recall_fscore_support(y_true, y_pred, average='weighted', pos_label = 0)
回答:
import numpy as npfrom sklearn.metrics import precision_recall_fscore_supporty_true = np.array(['0', '1', '1', '0', '1'])y_pred = np.array(['1', '0', '1', '0', '1'])#保留1'sy_true, y_pred = zip(*[[ytrue[i], ypred[i]] for i in range(len(ytrue)) if ytrue[i]=="1"])out = precision_recall_fscore_support(y_true, y_pred, average='micro')