我正在scikit管道中运行功能选择和交叉验证,以优化SVR中的超参数。首先进行互信息特征选择。据我所知,“管道”方法会导致对CV的每个新折叠重新计算特征选择。这样可以防止训练集泄漏到测试集中
但是,我们不确定.get_support( )
在这个上下文中返回什么。如果为数据集的每个折叠重新计算互信息,“K最佳”特征在折叠中不一致。由.get_support( )
返回的特征是否基于最佳模型的所有折叠的分数?那分数是如何计算的
cached_pipe = Pipeline(
[
('selector',SelectKBest(mutual_info_regression)),
('model',SVR())
],
memory=memory
)
clf = GridSearchCV(
estimator = cached_pipe,
param_grid = hyperparameters,
cv = passed_cv,
scoring = 'neg_mean_squared_error',
return_train_score = 0,
n_jobs= -1,
verbose=0)
best_model = clf.fit(X, y.ravel())
HyperModel['feature_scores'] = best_model.best_estimator_.named_steps['selector'].scores_
HyperModel['feature_support'] = best_model.best_estimator_.named_steps['selector'].get_support()
目前没有回答
相关问题 更多 >
编程相关推荐