我想编写一个代码,网格搜索几个处理器和预处理器,但也搜索不同的功能组合。我通过在 gridsearchCV 中使用 RFECV 来做到这一点。但是,这需要很长时间才能运行。因此,我颠倒了顺序。我进行了网格搜索,然后将其放入 RFECV 中。现在,我想查看并打印在最佳模型中实际选择了哪些功能。我尝试了这个网站上的几个解决方案,但没有一个奏效。如何访问选定的功能?两者都grid_dem.get_support(indices=True)
没有grid_dem.support_
工作。我得到这个和其他类似的错误:AttributeError: 'RFECV' object has no attribute 'support_'
我的代码的相关部分是:
pipe = Pipeline([('preprocessing', StandardScaler()), ('rbf_svm', SVC(max_iter=1e6))])
param_grid ={'preprocessing': [StandardScaler(), MinMaxScaler(), Normalizer(), RobustScaler()],
'rbf_svm__kernel': ['rbf', 'poly', 'linear', 'sigmoid'],
'rbf_svm__C': np.logspace(-3,2,5), 'rbf_svm__gamma': np.logspace(-3,2,5)}
# {'preprocessing': [StandardScaler(), MinMaxScaler(), Normalizer(), RobustScaler()],
# 'rbf_svm': [LogisticRegression(max_iter=1e6)],
# 'logisticregression__C': np.logspace(-3,2,5)}]
grid_dem = GridSearchCV(pipe, param_grid, cv=5,verbose=5,n_jobs=3)
grid_dem.fit(X_democrat_train,y_democrat_train)
grid_dem.score(X_democrat_test,y_democrat_test)
print(grid_dem.best_estimator_)
rfecv=RFECV(grid_dem, verbose=3)
print(rfecv)
print(rfecv.get_support(indices=True))
# rfecv=rfecv.fit_transform(X_democrat_train, y_democrat_train)
# print(rfecv.get_params())
正如您在最后两行中看到的,我也尝试转换 X,但这也不起作用。