Nltk和; Python,绘制ROC曲线

时间:2011-11-19 06:52:25

标签: python nlp machine-learning nltk

我正在使用带有Python的nltk,我想绘制我的分类器(朴素贝叶斯)的ROC曲线。是否有绘制它的功能,或者我是否必须跟踪真阳性率和误报率?

如果有人能指出我已经做过的代码那就太棒了......

感谢。

1 个答案:

答案 0 :(得分:3)

PyROC看起来很简单:tutorialsource code

这是如何使用NLTK朴素贝叶斯分类器:

# class labels are 0 and 1
labeled_data = [
    (1, featureset_1),
    (0, featureset_2),
    (1, featureset_3),
    # ...
]

# naive_bayes is your already trained classifier,
# preferrably not on the data you're testing on :)

from pyroc import ROCData

roc_data = ROCData(
    (label, naive_bayes.prob_classify(featureset).prob(1))
    for label, featureset
    in labeled_data
)
roc_data.plot()

<强>编辑:

  • ROC仅适用于二元分类器。如果你有三个类,你可以分别测量你的正面和负面类的表现(通过将其他两个类计为0,就像你提出的那样)。
  • 库期望决策函数的输出作为每个元组的第二个值。然后它尝试所有可能的阈值,例如f(x)> = 0.8 =&gt;分类为1,并绘制每个阈值的一个点(这就是为什么你最终得到一条曲线)。因此,如果你的分类器猜测0级,你实际上想要一个接近于零的值。这就是我提出.prob(1)
  • 的原因