get_support在GridSearch CV中选择的功能



我正在使用PipeLine、GridsearchCV,并且我正在尝试检索所选的功能

pipeline = Pipeline(
[
('transform', SimpleImputer(strategy='mean')),  
('selector',SelectKBest(f_regression)),
('classifier',KNeighborsClassifier())
]
)
scoring = ['precision', 'recall','accuracy']
CV = StratifiedKFold(n_splits = 4, random_state = None, shuffle=True)
search = GridSearchCV(
estimator = pipeline,
param_grid = {'selector__k':[3,4,5,6,7,8,9,10], 
'classifier__n_neighbors':[3,4,5,6,7], 'classifier__weights' :['uniform', 'distance'],
'classifier__algorithm' :['auto', 'ball_tree', 'kd_tree', 'brute'],
'classifier__p':[1,2]  },
n_jobs=-1,
refit='accuracy',
scoring=scoring,
cv=CV,
verbose=0
)
search.fit(data,target)

selectkbest作用于每个分割的训练数据,而不是整个数据集,这是完美的。对我来说,令人困惑的是这一行返回了一组功能:

search.best_estimator_.named_steps['selector'].get_support()  

我在这里有什么功能?我假设每个迭代都有一组不同的基于分割的选定特征。

由于搜索参数refit不是False,因此使用性能最佳的超参数集将模型重新装配到整个训练集上(此部分不拆分为折叠(;该单个模型是在属性CCD_ 3中公开的模型。

您可以定义一个额外的可调用scoring,它将返回功能列表;则在CCD_ 5中,将为每个超参数组合和每个折叠选择特征。

最新更新