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

2024-09-30 12:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

虽然我了解潜在的好处,尤其是与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


Tags: theforpipelinestepwithstepsareeach
1条回答
网友
1楼 · 发布于 2024-09-30 12:23:52

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

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)

现在使用网格搜索的常用方法是尝试所有步骤的不同参数。 作为示例,让我们使用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)

问题在于,这种方法无法测试不同步骤之间的参数相关性

相关问题 更多 >

    热门问题