【问题标题】:The difference between defining a step in pipline or as a step in param_grid, e.g. dimensionality reduction在管道中定义一个步骤或在 param_grid 中定义一个步骤之间的区别,例如降维
【发布时间】:2021-11-16 07:17:40
【问题描述】:

在这个 scikit-learn 文档中:

https://scikit-learn.org/stable/auto_examples/compose/plot_compare_reduction.html#sphx-glr-auto-examples-compose-plot-compare-reduction-py

我无法弄清楚在 pipe 和 param_grid 中进行降维的目的;换句话说,如果在 pipe 或 param_grid 中定义所有降维,会发生什么?代码如下:

pipe = Pipeline(  
    [
        # the reduce_dim stage is populated by the param_grid
        ("reduce_dim", "passthrough"),
        ("classify", LinearSVC(dual=False, max_iter=10000)),
    ]
)  

N_FEATURES_OPTIONS = [2, 4, 8]
C_OPTIONS = [1, 10, 100, 1000]
param_grid = [
    {
        "reduce_dim": [PCA(iterated_power=7), NMF()],
        "reduce_dim__n_components": N_FEATURES_OPTIONS,
        "classify__C": C_OPTIONS,
    },
    {
        "reduce_dim": [SelectKBest(chi2)],
        "reduce_dim__k": N_FEATURES_OPTIONS,
        "classify__C": C_OPTIONS,
    },
]
reducer_labels = ["PCA", "NMF", "KBest(chi2)"]

grid = GridSearchCV(pipe, n_jobs=1, param_grid=param_grid)
X, y = load_digits(return_X_y=True)
grid.fit(X, y)  

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    它需要在param_grid 中,因为您想尝试不同的选项。

    它还需要在pipeline 中,否则您在给定时间点尝试的选项根本不会被使用。

    【讨论】:

    • 太棒了,感谢您的澄清
    • 如果我将当前位于param_grid 中的两个“reduce_dim”移动到pipeline 并将它们的参数保留在param_gird 中以尝试不同的选项,它会导致相同的输出吗?上面的代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多