9

我是 scikit 的新手,在结合数据规模和网格搜索方面有 2 个小问题。

  1. 高效洁牙机

考虑使用 Kfolds 进行交叉验证,我希望每次我们在 K-1 折叠上训练模型时,数据缩放器(例如使用 preprocessing.StandardScaler() )仅适合 K-1 折叠然后适用于剩余的折叠。

我的印象是,以下代码将适合整个数据集的缩放器,因此我想对其进行修改以使其行为如前所述:

classifier = svm.SVC(C=1)    
clf = make_pipeline(preprocessing.StandardScaler(), classifier)
tuned_parameters = [{'C': [1, 10, 100, 1000]}]
my_grid_search = GridSearchCV(clf, tuned_parameters, cv=5)
  1. 检索内部定标器配件

当 refit=True 时,“在”网格搜索之后,模型在整个数据集上重新拟合(使用最佳估计器),我的理解是管道将再次使用,因此缩放器将适合整个数据集。理想情况下,我想重用该拟合来扩展我的“测试”数据集。有没有办法直接从 GridSearchCV 中检索它?

4

1 回答 1

3
  1. GridSearchCV 对 Pipeline 对象一无所知;它假设提供的估计器是原子的,因为它不能只选择某个特定阶段(例如,StandartScaler)并在不同数据上拟合不同阶段。所有 GridSearchCV 都 - 在提供的估计器上调用 fit(X, y) 方法,其中 X,y - 一些数据拆分。因此,它适合相同拆分的所有阶段。
  2. 尝试这个:

    best_pipeline = my_grid_search.best_estimator_ best_scaler = best_pipeline["standartscaler"]

  3. 如果您将转换器/估计器包装到管道中 - 您必须为每个参数的名称添加前缀,例如:tuned_parameters = [{'svc__C': [1, 10, 100, 1000]}]查看这些示例以获取更多详细信息连接多个特征提取方法流水线:链接 PCA 和逻辑回归

无论如何阅读这个,它可能会帮助你GridSearchCV

于 2015-12-03T18:03:52.810 回答