如何在与RFECV结合时使用GridSearch中的'max_Feature'? [英] How to use 'max_features' in Gridsearch when combining with RFECV?

查看:30
本文介绍了如何在与RFECV结合时使用GridSearch中的'max_Feature'?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

感谢您提前答复。这是我的第一篇帖子,而且我还是个新手,所以如果我的内容格式化得很糟糕,我很抱歉。

我正在尝试将递归特征消除和网格搜索结合起来,以确定超参数和特征数量的最佳组合。使用下面的代码时,我得到max_Feature必须在(0,n_Feature]估计器拟合失败。除max_Feature之外的任何值都是1。我的数据集中有300多个要素,其中许多可能并不重要。

‘’

    param_dist = {'estimator__n_estimators': [i for i in range(11, 121, 10)],
                  'estimator__criterion': ['gini', 'entropy']}
                  'estimator__max_features': [i for i in range(1, 10)]}



    estimator = sklearn.ensemble.RandomForestClassifier(n_jobs=-1, random_state=42, bootstrap=True, verbose=True, max_features='auto')

    selector = sklearn.feature_selection.RFECV(estimator=estimator, step=1, cv=5,
                                                scoring='accuracy')

    rf_nested = sklearn.model_selection.GridSearchCV(estimator=selector, param_grid=param_dist, cv=5,
                                                        scoring='accuracy', n_jobs=-1, refit=True, return_train_score=True)


    rf_nested.fit(X_train, y_train)

‘’

推荐答案

我不会混淆功能选择步骤和超参数优化步骤。

问题是,您将向网格搜索传递一个选择器,而不是一个估计器--这可能最终会起作用,但可能不是最好的主意,因为这两个类不同,方法也不同。

我不确定这两者的实现,但如果只有几个是重要的(甚至可能只有一个),那么RFECV可能会返回少量的功能,而GridSearchCV可能想要测试更多的功能--因此这些功能不可用。

此外,您正在做的是交叉验证中的交叉验证,这似乎是非常不必要的。对于网格搜索的每次评估,您运行您的选择器5次,而选择器又运行随机森林5次来选择特征的数量。

最后,我认为将这两个步骤分开会更好。首先通过RFECV找出最重要的特征,然后找出最大特征的最佳参数。

最后(无关)建议:我不会在网格上搜索估计器的数量。随机森林往往不会过大,因此最佳选择是在交叉验证时设置提前停止参数:)

这篇关于如何在与RFECV结合时使用GridSearch中的'max_Feature'?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆