我正在运行一项相对较大的工作,其中涉及对数据集进行随机网格搜索,这(使用较小的 n_iter_search)已经花费了很长时间。
我在一台 64 核机器上运行它,在大约 2 小时的时间里,它让 2000 个线程在第一次折叠时处于事件状态。然后它完全停止向标准输出报告。它的最新报告是:
[Parallel(n_jobs=-1)]:完成 60 次中的 4 次 |已用:84.7 分钟 剩余:1185.8 分钟
我在 htop 上注意到几乎所有核心都为 0%,这在训练随机森林时不会发生。该程序没有反馈或错误,如果不是 htop,我会认为它仍在训练中。这以前发生过,所以这是一个反复出现的问题。机器 react 灵敏,整个过程似乎还活着。
我已经有 verbose = 10。关于如何诊断 RandomizedSearchCV 内部发生的事情有什么想法吗?
我正在做的网格搜索:
rfc = RandomForestClassifier(n_jobs=-1)
param_grid = { 'n_estimators': sp_randint(100, 5000), 'max_features' : ['auto', None], 'min_samples_split' : sp_randint(2, 6) }
n_iter_search = 20
CV_rfc = RandomizedSearchCV(estimator=rfc, param_distributions=param_grid, n_iter = n_iter_search, verbose = 10,n_jobs = -1)
最佳答案
作为第一步,将 verbose
参数添加到 RandomForestClassifier
也可以让您查看搜索是否真的卡住了。它将显示拟合树的进度(building tree 88 out of 100
...)。
我真的不知道为什么你的搜索卡住了,但考虑一下它删除对 n_estimators
的搜索应该使你能够在仅 8 次迭代中对你在此处指定的整个参数空间进行网格搜索。
关于python - 如何使随机网格搜索更加冗长? (似乎停止了,但无法诊断),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31491583/