GridSearchCV:每次函数完成循环时打印一些表达式

时间:2016-01-09 18:04:08

标签: python function loops scikit-learn grid-search

假设你在Python中有一些函数function通过循环工作:例如,它可以是一个评估某个数学表达式的函数,例如: x**2,对于数组中的所有元素,例如([1, 2, ..., 100])(显然这是一个玩具示例)。是否有可能编写一个代码,使得每次function经过循环并获得结果时,执行一些代码,例如, print("Loop %s has been executed" % i)?因此,在我们的示例中,当计算x**1时,程序将打印Loop 1 has been executed,然后在计算x**2时,它会打印Loop 2 has been executed,依此类推。

请注意,困难来自于我没有对函数进行编程的事实,它是来自某个包的预先存在的函数(更具体地说,我感兴趣的函数是来自包GridSearchCV的{​​{1}} })。

2 个答案:

答案 0 :(得分:8)

最简单的方法是将函数的代码复制到您自己的函数中,调整它,然后使用它。在您的情况下,您必须子类setInterval并覆盖GridSearchCV方法。这种方法的问题在于它可能无法在包升级后继续存在。

在你的情况下,这没有必要。您可以在创建对象时指定详细级别:

_fit

我不完全确定详细数字本身的含义。以下是执行打印的the package used internally文档:

  

详细级别:如果非零,则打印进度消息。超过50,输出被发送到stdout。消息的频率随着详细程度而增加。如果超过10,则报告所有迭代。

如果您真的想知道GridSearchCV(verbose=100) 号码的作用,可以查看at the source code。我不知道。

答案 1 :(得分:0)

你可能会使用猴子修补("猴子"因为它是hacky)

假设库函数是

def function(f):
    for i in range(100):
        i**2

如果你想输入一个print语句,你需要将整个函数复制到你自己的文件中,然后进行微小的编辑:

def my_function(f):
    for i in range(100):
        i**2
        print ("Loop %s" % i)

现在你覆盖了库函数:

from library import module
module.existing_function = my_function

显然,这不是一个易于维护的解决方案(如果您的目标库已升级,您可能需要再次完成此过程),因此请确保仅将其用于临时调试目的。