我一直在尝试摆弄 sklearn 指标,尤其是 average_precision_score。但是,我只能在 sklearn 文档中找到一个计算 average_precision_score 的示例,并且也可以使用 SVM。下面是代码片段以及作为参考的文档链接:
文档 - Precision Recall Sklearn 和代码参考
# Create a simple classifier
classifier = svm.LinearSVC(random_state=random_state)
classifier.fit(X_train, y_train)
y_score = classifier.decision_function(X_test)
# Computing the avaerage_precision_score
from sklearn.metrics import average_precision_score
average_precision = average_precision_score(y_test, y_score)
现在我的问题是在上面的例子中,y_score是来自 decision_function 的输出(它预测样本的置信度分数),而y_test是类。考虑到 RandomForests 没有与 SVM 一样的 decision_function 方法,如何计算y_score?
我已经尝试并看到人们使用 predict(self, X)(Predict class for X) 和 predict_proba(self, X)(Predict class probabilities for X) 方法来计算 average_precision_score。使用这两种方法,我的结果非常不同。使用 predict(self, X) 我得到0.74作为 average_precision_score 并使用 predict_proba 我得到0.94。我的 y_test 是具有值 (1, 0) 的类标签。我有点困惑什么是正确的。何时使用 predict 与 predict_proba,以及为什么它们会产生如此不同的平均精度分数。任何帮助将不胜感激。