Python 管道网格搜索CV参数网格说明

Python 管道网格搜索CV参数网格说明,python,scikit-learn,pipeline,Python,Scikit Learn,Pipeline,这是什么意思?'feature\u selection\u\k':列表(范围(1,len(feature\u importances)+1))编码: param_grid = [{ 'preparation__num__imputer__strategy': ['mean', 'median', 'most_frequent'], 'feature_selection__k': list(range(1, len(feature_importances) + 1)) }] gr

这是什么意思?
'feature\u selection\u\k':列表(范围(1,len(feature\u importances)+1))
编码:

param_grid = [{
    'preparation__num__imputer__strategy': ['mean', 'median', 'most_frequent'],
    'feature_selection__k': list(range(1, len(feature_importances) + 1))
}]

grid_search_prep = GridSearchCV(prepare_select_and_predict_pipeline, param_grid, cv=5,
                                scoring='neg_mean_squared_error', verbose=2)
grid_search_prep.fit(housing, housing_labels)
在哪里

请您解释一下“功能选择”一行中的每一步:列表(范围(1,len(功能重要性)+1))


如果需要所有代码,请在此处:。我要问的代码部分在笔记本的底部。

列表(范围(1,len(feature\u importances)+1))
返回从1到n的整数列表,其中n是
feature\u importances的长度

例如,如果
特征重要性的长度为5

list(range(1, len(feature_importances) + 1))
将返回:

[1, 2, 3, 4, 5]

您需要添加“+1”,因为范围不包括上限

因为这里不适用于简单的估计器,而是适用于管道:

prepare_select_and_predict_pipeline = Pipeline([
    ('preparation', full_pipeline),
    ('feature_selection', TopFeatureSelector(feature_importances, k)),
    ('svm_reg', SVR(**rnd_search.best_params_))
])
在哪里

param_网格
需要组织成“级别”,以便它知道将访问的组成管道组件的确切参数

因此,在这里,字符串的
feature\u selection
部分指的是
prepare\u select\u和
的相应部分,而
k
指的是
TopFeatureSelector
的相应参数。级别之间用双下划线分隔,因此要访问
TopFeatureSelector
的参数
k
,相应的参数定义为
feature\u selection\uk

出于同样的原因,为了让
参数网格
访问
SimpleComputer
策略
参数,相应的条目是
“准备数量输入策略”
,即:

  • 第一级管道的
    准备
    部分
    prepare\u select\u和\u predict\u管道
  • 第二级
    完整管道的
    num
    部分
  • 第三级
    num_管道
  • SimpleComputer

如前所述,每个条目由一个双下划线分隔
\uuuu

什么是
功能选择部分?它只是一个任意字符串吗?它是一个允许从1到nGreat搜索的列表。非常感谢。
[1, 2, 3, 4, 5]
prepare_select_and_predict_pipeline = Pipeline([
    ('preparation', full_pipeline),
    ('feature_selection', TopFeatureSelector(feature_importances, k)),
    ('svm_reg', SVR(**rnd_search.best_params_))
])
full_pipeline = ColumnTransformer([
        ("num", num_pipeline, num_attribs),
        ("cat", OneHotEncoder(), cat_attribs),
    ])
num_pipeline = Pipeline([
        ('imputer', SimpleImputer(strategy="median")),
        ('attribs_adder', CombinedAttributesAdder()),
        ('std_scaler', StandardScaler()),
    ])