随机森林:预测 vs predict_proba

时间:2021-03-26 11:27:00

标签: python scikit-learn random-forest predict roc

我正在研究一个多类、高度不平衡的分类问题。我使用随机森林作为基础分类器。

考虑到多个标准(指标:precision, recall conf_matrix, roc_auc),我必须在评估集上提供模型性能报告。

火车模型:

rf = RandomForestClassifier(()
rf.fit(train_X, train_y)

为了获得精确率/召回率和混淆矩阵,我喜欢:

pred = rf.predict(test_X)
precision = metrics.precision_score(y_test, pred)
recall  = metrics.recall_score(y_test, pred)
f1_score = metrics.f1_score(y_test, pred) 
confusion_matrix = metrics.confusion_matrix(y_test, pred)

很好,但是计算 roc_auc 需要类的预测概率而不是类标签。为此,我必须进一步这样做:

y_prob = rf.predict_proba(test_X)
roc_auc = metrics.roc_auc_score(y_test, y_prob)

但是我在这里担心 rf.predict() 首先产生的结果可能与 rf.predict_proba() 不一致,因此我报告的 roc_auc 分数。我知道多次调用 predict 会产生完全相同的结果,但我担心 predict 那么 predict_proba 可能会产生略有不同的结果,因此不适合与上述指标一起讨论.

如果是这种情况,是否有办法控制这一点,确保 predict() 用于确定预测标签的类概率在我调用 predict_proab 时完全相同?

1 个答案:

答案 0 :(得分:2)

predict_proba()predict() 彼此一致。事实上,predict 在内部使用 predict_proba,可以看出here in the source code