gpt4 book ai didi

python - 如何从 Scikit-Learn 中的详细输出估计 GridSearchCV 的进度?

转载 作者:太空狗 更新时间:2023-10-29 20:27:06 27 4
gpt4 key购买 nike

现在我正在运行一个非常激进的网格搜索。我有n=135 samples我正在运行 23 folds使用自定义交叉验证训练/测试列表。我有我的 verbose=2 .

下面是我运行的:

param_test = {"loss":["deviance"],
'learning_rate':[0.01, 0.025, 0.05, 0.075, 0.1, 0.15, 0.2],
"min_samples_split": np.linspace(0.1, 0.5, 12),
"min_samples_leaf": np.linspace(0.1, 0.5, 12),
"max_depth":[3,5,8],
"max_features":["log2","sqrt"],
"min_impurity_split":[5e-6, 1e-7, 5e-7],
"criterion": ["friedman_mse", "mae"],
"subsample":[0.5, 0.618, 0.8, 0.85, 0.9, 0.95, 1.0],
"n_estimators":[10]}

Mod_gsearch = GridSearchCV(estimator = GradientBoostingClassifier(),
param_grid = param_test, scoring="accuracy",n_jobs=32, iid=False, cv=cv_indices, verbose=2)

我查看了 stdout 中的详细输出:

$head gridsearch.o8475533
Fitting 23 folds for each of 254016 candidates, totalling 5842368 fits

基于此,看起来有 5842368使用我的网格参数对交叉验证对进行排列。

$ grep -c  "[CV]" gridsearch.o8475533
7047332

到目前为止,似乎已经完成了大约 700 万次交叉验证,但这比 5842368 还要多。总适合...

7047332/5842368 = 1.2062458236

然后当我查看 stderr文件:

$ cat ./gridsearch.e8475533
[Parallel(n_jobs=32)]: Done 132 tasks | elapsed: 1.2s
[Parallel(n_jobs=32)]: Done 538 tasks | elapsed: 2.8s
[Parallel(n_jobs=32)]: Done 1104 tasks | elapsed: 4.8s
[Parallel(n_jobs=32)]: Done 1834 tasks | elapsed: 7.9s
[Parallel(n_jobs=32)]: Done 2724 tasks | elapsed: 11.6s
...
[Parallel(n_jobs=32)]: Done 3396203 tasks | elapsed: 250.2min
[Parallel(n_jobs=32)]: Done 3420769 tasks | elapsed: 276.5min
[Parallel(n_jobs=32)]: Done 3447309 tasks | elapsed: 279.3min
[Parallel(n_jobs=32)]: Done 3484240 tasks | elapsed: 282.3min
[Parallel(n_jobs=32)]: Done 3523550 tasks | elapsed: 285.3min

我的目标:

我如何知道我的网格搜索相对于它可能花费的总时间的进度?

我感到困惑的是:

[CV]之间有什么关系? stdout 中的行, 适合的总数 stdout ,以及 stderr 中的任务?

最佳答案

数学很简单,但乍一看有点误导:

  1. 当每个任务开始时,日志记录机制会向 stdout 生成一个“[CV] ...”行,记录关于执行的开始和任务ends - 另一行添加了特定任务花费的时间(在行尾)。

  2. 此外,在某些时间间隔内,日志记录机制会将进度条写入 stderr(或者如果您将 verbose 设置为 >50 到 stdout) 表示总任务(适合)中完成任务的数量和当前花费的总时间,就像那个:

    [Parallel(n_jobs=32)]:完成 2724 个任务 |经过:11.6 秒

对于您的情况,您有 5842368 总适合度,即任务。

您计算了“[CV] ...”的 7047332,即 大约 7047332/2 = 3523666 完成的任务和进度条显示准确 完成了多少任务 - 3523550(大约 - 因为有些任务可以开始,但在计数时还没有结束)。

关于python - 如何从 Scikit-Learn 中的详细输出估计 GridSearchCV 的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398909/

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