Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scikit learn 如何使用';max#u功能';与RFECV组合时是否在Gridsearch中?_Scikit Learn_Random Forest_Gridsearchcv_Rfe - Fatal编程技术网

Scikit learn 如何使用';max#u功能';与RFECV组合时是否在Gridsearch中?

Scikit learn 如何使用';max#u功能';与RFECV组合时是否在Gridsearch中?,scikit-learn,random-forest,gridsearchcv,rfe,Scikit Learn,Random Forest,Gridsearchcv,Rfe,谢谢你提前回答。这是我的第一篇文章,我对python还比较陌生,所以如果我格式化了一些糟糕的东西,我很抱歉 我试图在sklearn中将递归特征消除和网格搜索结合起来,以确定超参数和特征数量的最佳组合。当使用下面的代码时,我得到max\u特征必须在(0,n\u特征]估计器拟合中失败。对于max\u特征以外的任何特征都是1。我的数据集中有300多个特征,其中许多可能不重要 ''' ''”我不会将特征选择步骤和超参数优化步骤混为一谈。 问题是,您将选择器传递给网格搜索,而不是估计器-这可能最终会起作用

谢谢你提前回答。这是我的第一篇文章,我对python还比较陌生,所以如果我格式化了一些糟糕的东西,我很抱歉

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

'''


''”

我不会将特征选择步骤和超参数优化步骤混为一谈。 问题是,您将选择器传递给网格搜索,而不是估计器-这可能最终会起作用,但这可能不是最好的主意,因为这两个类不同,方法也不同。 我不确定这两个功能的实现情况,但如果只有少数功能是重要的(甚至可能只有一个),RFECV可能会返回少量功能,而GridSearchCV可能希望测试更多的功能,因此这些功能不可用。 此外,您所做的是交叉验证中的交叉验证,这似乎是不必要的。对于网格搜索的每次评估,您运行选择器5次,然后依次运行随机林5次以选择功能的数量。 最后,我认为最好将这两个步骤分开。首先通过RFECV找到最重要的功能,然后找到max_功能的最佳参数。
最后(不相关)建议:我不会对估计器的数量进行网格搜索。随机林往往不会过度拟合,因此最好的选择是在交叉验证时设置一个提前停止参数:)

我不会混合特征选择步骤和超参数优化步骤 问题是,您将选择器传递给网格搜索,而不是估计器-这可能最终会起作用,但这可能不是最好的主意,因为这两个类不同,方法也不同 我不确定这两个功能的实现情况,但如果只有少数功能是重要的(甚至可能只有一个),RFECV可能会返回少量功能,而GridSearchCV可能希望测试更多的功能,因此这些功能不可用 另外,您所做的是交叉验证中的交叉验证,这似乎是不必要的。对于网格搜索的每次评估,您运行选择器5次,选择器依次运行随机林5次以选择要素的数量 最后,我认为你最好把这两个步骤分开。首先通过RFECV找到最重要的特征,然后找到max_特征的最佳参数 最后(不相关的)建议:我不会对估计数进行网格搜索。随机林往往不会过度拟合,因此最好的选择是在交叉验证时设置提前停止参数:)

    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)