Scikit-learn 参数 oob_score, oob_score_, oob_prediction_

Posted

技术标签:

【中文标题】Scikit-learn 参数 oob_score, oob_score_, oob_prediction_【英文标题】:Scikit-learn parameters oob_score, oob_score_, oob_prediction_ 【发布时间】:2016-02-11 09:32:25 【问题描述】:

我很难找出 oob_score_ 对 scikit-learn 中随机森林回归器的含义。在文档上它说:

oob_score_: 浮动 使用袋外估计获得的训练数据集的分数。

起初我以为它会返回袋外实例集上每个实例的分数。但这是由属性给出的:

oob_prediction_ : 形状数组 = [n_samples] 使用训练集的袋外估计计算的预测。

它返回一个包含每个实例预测的数组。然后分析文档上的其他参数,我意识到该方法 score(X, y, sample_weight=None) 返回确定系数 R²。

考虑到调用属性 oob_score_ 返回一个浮点值,它代表什么?如果可能的话,我也想知道它是如何计算的。

文档的链接是RandomForestRegressor。

【问题讨论】:

【参考方案1】:

它准确地返回文档中所说的内容

oob_score_ :使用袋外估计获得的训练数据集的浮点分数。

分数在哪里

score(X, y, sample_weight=None) 返回确定系数 R²。

和袋外估计是由于装袋过程而未用于训练的样本。

看看source,第 727-740 行

    predictions /= n_predictions
    self.oob_prediction_ = predictions

    if self.n_outputs_ == 1:
        self.oob_prediction_ = \
            self.oob_prediction_.reshape((n_samples, ))

    self.oob_score_ = 0.0

    for k in range(self.n_outputs_):
        self.oob_score_ += r2_score(y[:, k],
                                    predictions[:, k])

    self.oob_score_ /= self.n_outputs_

换句话说,这只是oob_prediction_ 上的 R2 分数

【讨论】:

以上是关于Scikit-learn 参数 oob_score, oob_score_, oob_prediction_的主要内容,如果未能解决你的问题,请参考以下文章

sklearn 随机森林:.oob_score_ 太低?

随机森林算法OOB_SCORE最佳特征选择

使用 scikit-learn 对多类支持向量机进行参数优化

ValueError:Numpy中的非字符串名称仅在AWS Lambda上进行unpickling

scikit-learn 中的 SVC 和 LinearSVC 在啥参数下是等效的?

scikit-learn 因子分析的旋转参数