我正在阅读this tutorial,它将PCA和逻辑回归结合在一个管道中,之后应用交叉验证和一组定义的PCA和Logistic回归参数。这是我从例子中理解的,然后我会问我的问题。
我明白了:
执行GridSearchCV时,它首先默认为3倍。因此,它首先计算具有20个组件的PCA,然后转换数据并让它进入Logistic回归进行训练。现在对于逻辑回归C参数的每个值,它将应用3倍交叉验证并查看哪些值,因此最终将进行3 * 3 = 9次逻辑回归训练,因为我们有3个C参数值和3个倍数的每个参数值的交叉验证。
之后它将对PCA的第二个参数(即40)执行相同的操作,因此其他9个训练。然后还对PCA 64的最后一个参数进行了9次培训。因此,我们将总共进行9 * 3 = 27次逻辑回归训练。
我的问题:我对该程序的理解是否正确?
答案 0 :(得分:1)
是的,这是完全正确的。您可以通过在详细模式下设置网格搜索过程轻松检查它:
>>> 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(默认情况下会发生这种情况。)