Scikit-结合规模和网格搜索



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

  1. 高效缩放器

考虑到使用Kfolds的交叉验证,我希望每次我们在K-1折叠上训练模型时,数据缩放器(例如使用预处理.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. 取回内部缩放器配件

当重新装配=True时,"在"网格搜索之后,模型将在整个数据集上重新装配(使用最佳估计器),我的理解是管道将再次使用,因此缩放器将适合整个数据集。理想情况下,我希望重用这种适合度来扩展我的"测试"数据集。有没有一种方法可以直接从GridSearchCV中检索它?

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

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

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

无论如何,阅读本文,它可能会帮助您GridSearchCV

相关内容

  • 没有找到相关文章

最新更新