scikit-learn中的参数oob_score_等于准确度还是错误?

no_*_*123 5 python python-2.7 random-forest scikit-learn

我从Python scikit-learn包中实现了随机森林分类器(RF)以解决ML问题.在第一阶段,我使用交叉验证来检查其他算法,现在我可以选择RF.

后来我还查看了RF的OOB估计告诉我的内容.但是,当我将'oob_score_'中的回报与我的CV结果进行比较时,我有很大的差异.

scikit-learn文档告诉我:

oob_score:bool

是否使用袋外样本来估计泛化误差.

由于doc,我假设参数'oob_score_'是误差估计.但是寻找原因,我也想到它可能实际上估计了准确性而不是这个 - 至少有点 - 更接近我的简历结果.我也检查了代码,更多的是相信这是准确性,但我想确定...(在这种情况下,我发现该文档误导BTW).

oob_score_是scikit-learn准确度还是误差估计?

lej*_*lot 5

它与.score方法类似,可返回模型的准确性。它只是概括为oob场景。文档确实确实有点误导。

您可能会在代码中找到https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/ensemble/forest.py

for k in range(self.n_outputs_):
            if (predictions[k].sum(axis=1) == 0).any():
                warn("Some inputs do not have OOB scores. "
                     "This probably means too few trees were used "
                     "to compute any reliable oob estimates.")

            decision = (predictions[k] /
                        predictions[k].sum(axis=1)[:, np.newaxis])
            oob_decision_function.append(decision)
            oob_score += np.mean(y[:, k] ==
                                 np.argmax(predictions[k], axis=1), axis=0)
Run Code Online (Sandbox Code Playgroud)

它仅计算正确分类的平均值。