PyROC выглядит достаточно просто: учебник , исходный код
Вот как это будет работать с наивным байесовским классификатором 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 => классифицировать как 1, и строит точку для каждого порогового значения (вот почему вы получаете кривую в конце).Поэтому, если ваш классификатор угадывает класс 0, вы на самом деле хотите, чтобы значение было ближе к нулю.Вот почему я предложил
.prob(1)