首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机森林的特定交叉验证

随机森林的特定交叉验证
EN

Stack Overflow用户
提问于 2016-07-01 18:11:21
回答 1查看 48.5K关注 0票数 15

我正在使用随机森林与科学知识。射频覆盖数据,预测结果较差。

超调不取决于RF: NBtree、Depth_Tree的参数。

过度适应发生在许多不同的参数(通过grid_search测试它)。

补救措施:调整初始数据/下采样,以影响拟合结果(人工预处理噪声样本)。

代码语言:javascript
复制
Loop on random generation of RF fits, 

Get RF prediction on the  data for prediction
Select the model which best fits the "predicted data" (not the calibration data).

这个蒙特卡洛斯非常消耗,只是想知道是否有另一种方法来做交叉验证的随机森林?(非超参数优化)

编辑

EN

回答 1

Stack Overflow用户

发布于 2016-07-02 01:30:30

与scikit中的任何分类器进行交叉验证实际上是微不足道的:

代码语言:javascript
复制
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
import numpy as np

clf = RandomForestClassifier() #Initialize with whatever parameters you want to

# 10-Fold Cross validation
print np.mean(cross_val_score(clf, X_train, y_train, cv=10))

如果您希望运行网格搜索,您可以通过GridSearchCV类轻松地完成它。为了做到这一点,您必须提供一个param_grid,根据文档,它是

以参数名称(字符串)作为键和参数设置列表作为值的字典,或者这类字典的列表,在这种情况下,将探索列表中每个字典所跨越的网格。这允许对任何参数设置序列进行搜索。

因此,您可以将您的param_grid定义为:

代码语言:javascript
复制
param_grid = {
                 'n_estimators': [5, 10, 15, 20],
                 'max_depth': [2, 5, 7, 9]
             }

然后您可以使用GridSearchCV类,如下所示

代码语言:javascript
复制
from sklearn.model_selection import GridSearchCV

grid_clf = GridSearchCV(clf, param_grid, cv=10)
grid_clf.fit(X_train, y_train)

然后,您可以使用grid_clf. best_estimator_获得最佳模型,使用grid_clf. best_params_获得最佳参数。类似地,您可以使用grid_clf.cv_results_获取网格分数。

希望这能有所帮助!

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38151615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档