如何为 randomsearchCV 分配时间限制(运行 永远)?
How can I assign a time limit to randomsearchCV (running forever)?
是否可以为随机搜索简历指定时间限制?我知道您可以调整迭代次数,但我特别想控制除了迭代次数之外的最大搜索时间。
这背后的原因是我使用了一个包含不同预处理步骤的搜索网格,并且对于每个预处理组合,我调用了一个 cv=4 和 iterations=30 的 randomsearchCV。这对大多数组合来说没有问题(训练时间真的很短 <20 秒),但对于某些组合来说,它似乎永远 运行,我不知道为什么。
我搜索了几个小时无限训练时间背后的问题是什么,但我已经放弃了,所以我只想跳过训练时间超过 10 分钟的情况。
如有必要,我可以展示代码,但我认为这对这里没有帮助。
我不确定您使用的是哪个模块以及是否有一个已实现的函数来执行您想要的操作,但您可以"manually"检查代码中传递的时间:
import time
def somefunc(time_started):
a = true
time_limit = 5000
while a:
# do something / run an iteration
if round(time.monotonic() * 1000) - time_started > time_limit:
# check how much time/ms has elapsed since you called the function
a = false # will break on next "while-iteration"
t0= round(time.monotonic() * 1000)
func(t0)
显然,您可以将 time_limit 更改为您需要的任何其他金额。
是否可以为随机搜索简历指定时间限制?我知道您可以调整迭代次数,但我特别想控制除了迭代次数之外的最大搜索时间。
这背后的原因是我使用了一个包含不同预处理步骤的搜索网格,并且对于每个预处理组合,我调用了一个 cv=4 和 iterations=30 的 randomsearchCV。这对大多数组合来说没有问题(训练时间真的很短 <20 秒),但对于某些组合来说,它似乎永远 运行,我不知道为什么。
我搜索了几个小时无限训练时间背后的问题是什么,但我已经放弃了,所以我只想跳过训练时间超过 10 分钟的情况。
如有必要,我可以展示代码,但我认为这对这里没有帮助。
我不确定您使用的是哪个模块以及是否有一个已实现的函数来执行您想要的操作,但您可以"manually"检查代码中传递的时间:
import time
def somefunc(time_started):
a = true
time_limit = 5000
while a:
# do something / run an iteration
if round(time.monotonic() * 1000) - time_started > time_limit:
# check how much time/ms has elapsed since you called the function
a = false # will break on next "while-iteration"
t0= round(time.monotonic() * 1000)
func(t0)
显然,您可以将 time_limit 更改为您需要的任何其他金额。