首页 文章

使用sklearn时的精度和召回错误

提问于
浏览
2

我正在使用sklearn精确度并召回以获得这些分数 . 我收到错误说错误值 . 谁能告诉我哪里做错了?

我的y_test如下

443     positive
3615    positive
2030    negative
2993    positive
2870    positive
2907    negative
2215    positive

我的预测如下

['positive' 'positive' 'positive' ..., 'positive' 'positive' 'positive']

码:

from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
precision_score(y_test, pred)

错误:

ValueError: pos_label=None is not a valid label: array(['negative', 'positive'], 
      dtype='<U8')

1 回答

  • 3

    精确度定义为真阳性与总预测阳性的比率 .

    precision = tp / (tp + fp)
    

    现在,在您的情况下,该程序不知道哪个标签被视为正类 . 所以你需要自己定义它 . 做这个:

    precision_score(y_test, pred, pos_label='positive')
    

    此外,您显示的错误: pos_label=None is not a valid label 告诉您可能有旧版本的scikit . 较新的版本应抛出此错误(如果未指定 pos_label ):

    pos_label=1 is not a valid label
    

    所以我建议你升级到最新版本

相关问题