相关疑难解决方法(0)

具有RFECV的GridSearchCV在sklearn中的含义

基于递归特征消除和使用scikit-learn的网格搜索,我知道RFECV可以结合使用GridSearchCV以获得更好的模型参数设置,如线性SVM.

如答案所述,有两种方法:

  • "在RFECV上运行GridSearchCV,这将导致数据分成两次折叠(GridSearchCV内部和RFECV内部),但搜索组件数量将是有效的."

  • "GridSearchCV仅针对RFE,这将导致数据的单一分割,但是对RFE估计器的参数进行非常低效的扫描."

为了使我的问题清楚,我必须首先澄清RFECV:

  1. 将整个数据拆分为n个折叠.

  2. 在每个折叠中,通过仅拟合训练数据来获得特征等级rfe.

  3. 对排名进行排序并使训练数据适合SVM并在测试数据上进行测试以进行评分.这应该进行m次,每次都有减少的特征数量,其中m是假设的特征数量step=1.

  4. 在前一步骤中获得一系列得分,并且在步骤1~3已经进行n次之后,这样的序列将最后在n次折叠中平均,得到平均评分序列,表明要做的最佳特征数rfe.

  5. 以功能最数目的参数n_features_to_selectrfe装有原始整个数据.

  6. .support_获得特色中的"赢家"; .grid_scores_得到平均得分序列.

  7. 如果我错了请纠正我,谢谢.

所以我的问题是在哪里放置GridSearchCV?我猜第二种方式"在RFE上做GridSearchCV"是在第5步做GridSearchCV,它将SVM的参数设置为网格中的一个值,使其适合GridSearchCV分割的训练数据,以获得步骤中建议的功能数量4,并用其余的数据进行测试以获得分数.这样的过程在k次完成,平均得分表示网格中该值的良好性,其中k是cvGridSearchCV中的参数.但是,由于替代训练数据和网格值,所选功能可能会有所不同,如果按照我的猜测完成,则第二种方式不合理.

GridSearchCV实际上如何与RFECV结合?

feature-selection scikit-learn cross-validation

7
推荐指数
0
解决办法
1120
查看次数

如何在sklearn中使用gridsearchcv执行特征选择

recursive feature elimination with cross validation (rfecv)用作以下功能选择器randomforest classifier

X = df[[my_features]] #all my features
y = df['gold_standard'] #labels

clf = RandomForestClassifier(random_state = 42, class_weight="balanced")
rfecv = RFECV(estimator=clf, step=1, cv=StratifiedKFold(10), scoring='roc_auc')
rfecv.fit(X,y)

print("Optimal number of features : %d" % rfecv.n_features_)
features=list(X.columns[rfecv.support_])
Run Code Online (Sandbox Code Playgroud)

我还执行GridSearchCV以下操作,以调整以下超参数RandomForestClassifier

X = df[[my_features]] #all my features
y = df['gold_standard'] #labels

x_train, x_test, y_train, y_test = train_test_split(X, y, random_state=0)

rfc = RandomForestClassifier(random_state=42, class_weight = 'balanced')
param_grid = { 
    'n_estimators': [200, 500],
    'max_features': …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn grid-search data-science

6
推荐指数
2
解决办法
1710
查看次数