Python 3.x 如何从回归问题的OOB得分估计OOB错误率

Python 3.x 如何从回归问题的OOB得分估计OOB错误率,python-3.x,regression,random-forest,Python 3.x,Regression,Random Forest,我正在使用python中的sklearn中的随机森林回归包。我的数据集包含146个训练样本和38个测试样本。我已经训练了这个模型,但是我想通过改变num_特性,用树的数量来绘制OOB错误率。对于特定数量的树,将选择OOB误差最小的曲线作为测试集的最佳模型参数 我已将OOB错误率计算为(1-OOB分数)。但对于最佳曲线,OOB错误率从0.8降低到0.625。这意味着我的OOB分数即使有很多树(300)也没有多大提高。我想知道我是否按照正确的程序绘制OOB错误率。如何提高随机森林模型的性能 ense

我正在使用python中的sklearn中的随机森林回归包。我的数据集包含146个训练样本和38个测试样本。我已经训练了这个模型,但是我想通过改变num_特性,用树的数量来绘制OOB错误率。对于特定数量的树,将选择OOB误差最小的曲线作为测试集的最佳模型参数

我已将OOB错误率计算为(1-OOB分数)。但对于最佳曲线,OOB错误率从0.8降低到0.625。这意味着我的OOB分数即使有很多树(300)也没有多大提高。我想知道我是否按照正确的程序绘制OOB错误率。如何提高随机森林模型的性能

ensemble_clfs = [

    ("max_features=1",
        RandomForestRegressor(n_estimators=125,max_depth=5,min_samples_split=6,
                               warm_start=True,max_features=1,min_samples_leaf=3,
                               oob_score=True,random_state=42)),
    ("max_features=2",
        RandomForestRegressor(n_estimators=125,max_depth = 5,min_samples_split=8,
                               warm_start=True, max_features=2,min_samples_leaf=3,
                               oob_score=True,
                               random_state=42)),
     ("max_features=3",
        RandomForestRegressor(n_estimators=125,max_depth 
 =5,min_samples_split=8,
                               warm_start=True, max_features=3,min_samples_leaf=3,
                               oob_score=True,
                               random_state=42))
]

error_rate = OrderedDict((label, []) for label, _ in ensemble_clfs)

min_estimators = 10
max_estimators = 300

for label, clf in ensemble_clfs:
    for i in range(min_estimators, max_estimators + 1):
        clf.set_params(n_estimators=i)
        clf.fit(X, Y)

        # Record the OOB error for each `n_estimators=i` setting.
        ''''''
        oob_error = 1 - clf.oob_score_
        error_rate[label].append((i, oob_error))
        ''''''

我希望OOB错误率尽可能低,可能高达0.1,这表明我的验证是准确的。所以我可以将其应用于测试集

您是否尝试过简单的训练/测试分割来获取您的林的错误?要看问题是否真的在于模型的预测精度差,不需要bcz OOB计算wrong@ShihabShahriar您的意思是将培训集进一步拆分为验证集,并检查验证集上的预测准确性,而不是使用OOB错误吗?是的,您是否尝试过简单的培训/测试拆分来获取您的森林的错误?要了解问题是否确实在于模型的预测精度差,不需要bcz OOB计算wrong@ShihabShahriar您的意思是将培训集进一步拆分为验证集,并检查验证集上的预测准确性,而不是使用OOB错误吗?是的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。