我希望我可以用几行代码/解释来说明这一点。
我有一个 16K 的文本列表,标记了 30 多个通过不同分类器运行的不同类别;我的预测和地面实况平均匹配率为 94%。
我现在在测量一些额外的东西之后(不确定我应该在 F1_score 最小值之上测量什么,因为我仍在学习,但我遇到了来自 sklearn 的 log_loss,结果我理解它的范围在 0 和 1 之间。当然而,结果与我的预测相反,结果是 1.48xxx,实际上更高。
在试图了解什么是错的。
我已经探索了 log_loss 所需的 ComplementNB.predict_proba 的结果,并且该值与我的预测数组之一匹配。
下面是一些代码:
from sklearn.metrics import log_loss
y = ... # This is my array of value that is my source of truth
labels = numpy.unique(y)
label_ary = [idx for gt in y for idx, lbl in enumerate(labels) if gt == lbl]
print(f'The log loss is {log_loss(label_ary, clf.predict_proba(X.toarray()))}')
无论我使用 label_ary 还是 y,在这两种情况下我都获得了相同的值,这意味着 log_loss 中的某些转换已经发生。
我不确定是我误解了结果还是函数的具体含义。
我究竟做错了什么?谢谢