我正在sklearn,python中使用随机森林回归软件包。我的数据集包含训练中的146个样本和测试集中的38个样本。我已经训练了模型,但是我想通过改变num_features绘制带有树数的OOB错误率。选择特定树数时OOB误差最小的曲线作为测试集的最佳模型参数。
我已将OOB错误率计算为(1-OOB分数)。但是,最佳曲线的OOB错误率从0.8降低到0.625。这意味着即使有大量树木(300),我的OOB得分也没有太大提高。我想知道我是否遵循正确的步骤来绘制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,这表明我的验证是准确的。这样我就可以将其应用于测试集OOB error rate with number of trees