Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么管道被用作GridsearchCV的一部分,而不是相反?_Python_Pandas_Machine Learning_Scikit Learn_Gridsearchcv - Fatal编程技术网

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

Python 为什么管道被用作GridsearchCV的一部分,而不是相反?,python,pandas,machine-learning,scikit-learn,gridsearchcv,Python,Pandas,Machine Learning,Scikit Learn,Gridsearchcv,虽然我了解潜在的好处,尤其是与GridSearchCV结合使用,但我想知道为什么它总是这样使用(或者至少从我的理解来看): 为每个分类器设置管道步骤(对于clf步骤,使用'passthrough')。然后,GridSearchCV为管道配备多个参数和分类器 我不确定这是否正确,但从我的观点来看,这似乎会导致分类器之前的步骤运行多次,即使它们总是与相同的参数一起使用 这就引出了一个问题,为什么它不被用在其他方面。。。或者这可能吗 以下是我脑海中的情景图片,以及示例配置: 首先,让我们创建一个数据集

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

为每个分类器设置管道步骤(对于
clf
步骤,使用
'passthrough'
)。然后,
GridSearchCV
为管道配备多个参数和分类器

我不确定这是否正确,但从我的观点来看,这似乎会导致分类器之前的步骤运行多次,即使它们总是与相同的参数一起使用

这就引出了一个问题,为什么它不被用在其他方面。。。或者这可能吗

以下是我脑海中的情景图片,以及示例配置:
首先,让我们创建一个数据集

从sklearn.dataset导入make_分类
从sk学习输入svm
从sklearn.decomposition导入PCA
从sklearn.pipeline导入管道
从sklearn.model_选择导入GridSearchCV
#生成一些数据以供使用
十、 y=进行分类(n\u信息=5,n\u冗余=0,随机状态=42)
现在使用网格搜索的常用方法是尝试所有步骤的不同参数。 例如,让我们使用
PCA
SVC

pipe=Pipeline(步骤=[('pca',pca()),('svm',svm.SVC())]
#管道的参数可以使用“_u”分隔的参数名称进行设置:
参数网格={
“pca组件”:[5,15,30,45,64],
“svm_u_C”:[1,5,10],
}
gs=GridSearchCV(管道、参数网格、n_作业=-1)
总装配(X,y)
但是,如果需要,您可以将前面的步骤应用于分类器本身,并且仅对分类器执行
GridSearch

pca=pca()
X_pca,y_pca=pca.fit_变换(X,y)
参数={'C':[1,5,10]}
svc=svm.svc()
gs=GridSearchCV(svc,参数)
总体拟合(X_主成分分析,y_主成分分析)

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

谢谢您的回答,这很好地解释了管道如何与gridsearch协同工作。但是,它并没有真正回答为什么它不能不同,正如我在所附的图中所解释的(一条管道,触发分类器网格)。您可以在管道的任何阶段使用“passthrough”指定多个可选对象(还原器、分类器等)。请参见此处,了解如何指定多个减缩器,您应该能够将其适应于多个分类器: