【发布时间】:2020-05-27 09:32:43
【问题描述】:
我一直在尝试调整 sklearn 指标,尤其是 average_precision_score。但是,我只能在 sklearn 文档中找到一个计算 average_precision_score 的示例,并且也可以使用 SVM。下面是代码 sn-p 以及作为参考的文档链接:
Documentation - Precision Recall Sklearn and code reference
# 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,为什么它们会导致如此不同的平均精度分数。任何帮助将不胜感激。
【问题讨论】:
标签: python machine-learning scikit-learn random-forest average-precision