如何为RandomSearchCV设置时间限制(避免无限运行)?

能否为随机搜索交叉验证(RandomSearchCV)设置一个时间限制?我知道可以调整迭代次数,但我特别想在控制迭代次数之外,还能控制最大搜索时间。

这样做的原因是我在使用一个包含不同预处理步骤的搜索网格,对于每一种预处理组合,我都会调用一个带有cv=4和iterations=30的RandomSearchCV。大多数组合都没有问题(训练时间非常短<20秒),但有些组合似乎会永远运行下去,我不知道为什么。

我花了几个小时寻找导致无限训练时间的问题所在,但最终放弃了,所以我只想跳过训练时间超过10分钟的情况。

如果需要,我可以展示代码,但我想在这里可能没什么帮助。


回答:

我不确定您使用的是哪个模块,也不知道是否有实现的功能可以满足您的需求,但您可以“手动”在代码中检查经过的时间:

import timedef somefunc(time_started):    a = true    time_limit = 5000    while a:          # 做一些事情/运行一个迭代         if round(time.monotonic() * 1000) - time_started > time_limit:               # 检查自调用函数以来经过的时间/毫秒              a = false # 将在下一次“while-迭代”中中断 t0= round(time.monotonic() * 1000)func(t0)

显然,您可以根据需要将time_limit更改为任何其他数值。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注