GridSearchCV:每次函数完成循环时打印一些表达式
GridSearchCV: print some expression each time a function completes a loop
假设您在 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
来自包 scikit learn
).
您可以使用 monkey-patching("monkey" 因为它很老套)
假设库函数是
def function(f):
for i in range(100):
i**2
如果您想输入打印语句,则需要将整个函数复制到您自己的文件中,然后进行微小的编辑:
def my_function(f):
for i in range(100):
i**2
print ("Loop %s" % i)
现在覆盖库函数:
from library import module
module.existing_function = my_function
显然这不是一个易于维护的解决方案(如果您的目标库已升级,您可能需要再次执行此过程),因此请确保仅将其用于临时调试目的。
执行此操作的最简单方法是将函数的代码复制到您自己的函数中,对其进行调整,然后使用它。在您的情况下,您必须继承 GridSearchCV
并覆盖 _fit
方法。这种方法的问题是它可能无法在软件包升级后继续存在。
在您的情况下,这不是必需的。您可以在创建对象时指定详细级别:
GridSearchCV(verbose=100)
我不完全确定冗长数字本身的含义。这是来自 the package used internally 的打印文档:
The verbosity level: if non zero, progress messages are printed. Above 50, the output is sent to stdout. The frequency of the messages increases with the verbosity level. If it more than 10, all iterations are reported.
如果你真的想知道 verbosity
号码的作用,你可以看看 at the source code。看不出来。
假设您在 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
来自包 scikit learn
).
您可以使用 monkey-patching("monkey" 因为它很老套)
假设库函数是
def function(f):
for i in range(100):
i**2
如果您想输入打印语句,则需要将整个函数复制到您自己的文件中,然后进行微小的编辑:
def my_function(f):
for i in range(100):
i**2
print ("Loop %s" % i)
现在覆盖库函数:
from library import module
module.existing_function = my_function
显然这不是一个易于维护的解决方案(如果您的目标库已升级,您可能需要再次执行此过程),因此请确保仅将其用于临时调试目的。
执行此操作的最简单方法是将函数的代码复制到您自己的函数中,对其进行调整,然后使用它。在您的情况下,您必须继承 GridSearchCV
并覆盖 _fit
方法。这种方法的问题是它可能无法在软件包升级后继续存在。
在您的情况下,这不是必需的。您可以在创建对象时指定详细级别:
GridSearchCV(verbose=100)
我不完全确定冗长数字本身的含义。这是来自 the package used internally 的打印文档:
The verbosity level: if non zero, progress messages are printed. Above 50, the output is sent to stdout. The frequency of the messages increases with the verbosity level. If it more than 10, all iterations are reported.
如果你真的想知道 verbosity
号码的作用,你可以看看 at the source code。看不出来。