使用Pipeline和GridSearchCV完成的培训次数



我正在阅读本教程,该教程将主成分分析和逻辑回归结合在一个管道中,然后应用交叉验证和主成分分析的一组定义参数和逻辑回归。以下是我从这个例子中理解的内容,然后我将提出我的问题。

我理解:

当GridSearchCV被执行时,它首先有一个默认的3倍。因此,它从计算20个分量的PCA开始,然后对数据进行转换,并将其放入Logistic回归中进行训练。现在,对于逻辑回归C参数的每个值,它将应用3倍的交叉验证,并查看哪些值,因此最终将进行3*3=9次逻辑回归训练,因为我们有3个C参数值,每个参数值有3倍的相互验证。

之后,它将对PCA的第二个参数做同样的事情,即40,所以其他9个训练。然后对PCA 64的最后一个参数进行了9次训练。因此,我们总共将进行9*3=27次逻辑回归培训。

我的问题是:我对这个程序的理解正确吗?

是的,这是完全正确的。您可以通过在详细模式下设置网格搜索过程来轻松检查:
>>> estimator = GridSearchCV(pipe, dict(pca__n_components=n_components,
...                                     logistic__C=Cs),
...                          verbose=1)
>>> estimator.fit(X_digits, y_digits)
Fitting 3 folds for each of 9 candidates, totalling 27 fits
[...snip...]

更一般地说,fit调用的数量是每个参数的值的数量乘以k,如果在整个训练集上重新调整最佳参数(默认情况下发生),则为+1。

相关内容

  • 没有找到相关文章

最新更新