scikit-learn 中的参数 oob_score_ 等于准确度还是错误?
Posted
技术标签:
【中文标题】scikit-learn 中的参数 oob_score_ 等于准确度还是错误?【英文标题】:Parameter oob_score_ in scikit-learn equals accuracy or error? 【发布时间】:2015-10-04 23:17:15 【问题描述】:我从 Python scikit-learn 包中实现了随机森林分类器 (RF),用于解决机器学习问题。在第一阶段,我使用交叉验证来抽查其他算法,现在我选择了 RF。
后来我还检查了 RF 的 OOB 估计告诉我什么。但是,当我将 'oob_score_' 中的回报与 CV 的结果进行比较时,我发现差异很大。
scikit-learn 文档告诉我:
oob_score : 布尔值
是否使用袋外样本来估计泛化误差。
由于文档的原因,我假设参数“oob_score_”是误差估计。但在寻找原因时,我也想到它实际上可能会估计准确性,这将 - 至少有点 - 更接近我的 CV 结果。我还检查了代码,更相信它的准确性,但想确定......(在这种情况下,我发现文档误导了顺便说一句)。
scikit-learn 中的 oob_score_ 是准确度还是误差估计?
【问题讨论】:
【参考方案1】:类似于.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)
它只是计算正确分类的平均值。
【讨论】:
以上是关于scikit-learn 中的参数 oob_score_ 等于准确度还是错误?的主要内容,如果未能解决你的问题,请参考以下文章
scikit-learn TSNE 中的 random_state 参数是啥?
class_weight 参数在 scikit-learn SGD 中的作用是啥
python - 如何在python scikit-learn中找到逻辑回归中的正则化参数?