随机森林:预测与 predict_proba
random forest: predict vs predict_proba
我正在处理一个多class、高度不平衡的class化问题。我使用随机森林作为基础 classifier.
我必须在考虑多个标准(指标:precision, recall conf_matrix, roc_auc
)的评估集上给出模型性能报告。
火车模型:
rf = RandomForestClassifier(()
rf.fit(train_X, train_y)
要获得precision/recall和confusion_matrix,我是这样的:
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
需要 classes 而不是 class 标签的预测概率。为此,我必须进一步这样做:
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()
用来决定预测标签的 class 概率与我调用 [=23] 时完全相同=]?
predict_proba()
和 predict()
是一致的。事实上,predict
在内部使用 predict_proba
here in the source code
我正在处理一个多class、高度不平衡的class化问题。我使用随机森林作为基础 classifier.
我必须在考虑多个标准(指标:precision, recall conf_matrix, roc_auc
)的评估集上给出模型性能报告。
火车模型:
rf = RandomForestClassifier(()
rf.fit(train_X, train_y)
要获得precision/recall和confusion_matrix,我是这样的:
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
需要 classes 而不是 class 标签的预测概率。为此,我必须进一步这样做:
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()
用来决定预测标签的 class 概率与我调用 [=23] 时完全相同=]?
predict_proba()
和 predict()
是一致的。事实上,predict
在内部使用 predict_proba
here in the source code