gpt4 book ai didi

python - 为什么管道被用作 GridsearchCV 的一部分,而不是相反?

转载 作者:行者123 更新时间:2023-11-30 09:58:23 24 4
gpt4 key购买 nike

虽然我了解潜在的好处,特别是与 GridSearchCV 结合使用,但我想知道为什么它总是这样使用(或者至少从我的理解来看):

Pipeline steps are set for each classifier (with 'passthrough' for the clf step). Then, GridSearchCV equips the pipeline with multiple parameters and classifiers.

我不确定这是否属实,但从我的角度来看,这似乎会导致分类器之前的步骤运行多次,即使它们总是与相同的参数。

这让我想到了一个问题,为什么不以相反的方式使用它......或者这是否可能?

这是我脑海中的情况图片以及示例配置: pipe-grid vs. grid-pipe

最佳答案

首先让我们创建一个数据集

from sklearn.datasets import make_classification
from sklearn import svm
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV


# generate some data to play with
X, y = make_classification(n_informative=5, n_redundant=0, random_state=42)

现在使用 grid_search 的常用方法是为所有步骤尝试不同的参数。作为示例,我们使用 PCASVC

pipe = Pipeline(steps=[('pca', PCA()), ('svm', svm.SVC())])

# Parameters of pipelines can be set using ‘__’ separated parameter names:
param_grid = {
'pca__n_components': [5, 15, 30, 45, 64],
'svm__C': [1, 5, 10],
}
gs = GridSearchCV(pipe, param_grid, n_jobs=-1)
gs.fit(X, y)

但是,如果您愿意,可以将前面的步骤应用于分类器本身,并且仅在分类器上执行 GridSearch:

pca = PCA()
X_pca, y_pca = pca.fit_transform(X, y)

parameters = {'C':[1, 5, 10]}
svc = svm.SVC()
gs = GridSearchCV(svc, parameters)

gs.fit(X_pca, y_pca)

问题是这样你无法测试不同步骤之间的参数相关性。

关于python - 为什么管道被用作 GridsearchCV 的一部分,而不是相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60091770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com