Python GridSearchCV:每次函数完成循环时打印一些表达式
假设您在Python中有一些函数通过循环工作:例如,它可能是一个函数,用于对数组中的所有元素计算某个数学表达式,例如Python GridSearchCV:每次函数完成循环时打印一些表达式,python,function,loops,scikit-learn,grid-search,Python,Function,Loops,Scikit Learn,Grid Search,假设您在Python中有一些函数通过循环工作:例如,它可能是一个函数,用于对数组中的所有元素计算某个数学表达式,例如x**2,例如([1,2,…,100])(显然这是一个玩具示例)。是否可以编写这样的代码:每次函数通过循环并获得结果时,都会执行一些代码,例如打印(“循环%s已执行”%i)?因此,在我们的示例中,当计算了x**1时,程序打印执行了循环1,然后当计算了x**2时,它打印执行了循环2,依此类推 请注意,困难在于我没有对函数进行编程,它是某个软件包中预先存在的函数(更具体地说,我感兴趣的
x**2
,例如([1,2,…,100])
(显然这是一个玩具示例)。是否可以编写这样的代码:每次函数
通过循环并获得结果时,都会执行一些代码,例如打印(“循环%s已执行”%i)
?因此,在我们的示例中,当计算了x**1
时,程序打印执行了循环1
,然后当计算了x**2
时,它打印执行了循环2
,依此类推
请注意,困难在于我没有对函数进行编程,它是某个软件包中预先存在的函数(更具体地说,我感兴趣的函数是来自软件包的
GridSearchCV
)。您可能会使用猴子补丁(“猴子”,因为它是黑客)
假设库函数是
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
,并重写\u fit
方法。这种方法的问题是,它可能无法在包升级后继续使用
对你来说,这是没有必要的。创建对象时,只需指定详细级别:
GridSearchCV(verbose=100)
我不完全确定这个冗长的数字本身意味着什么。以下是用于打印的文档:
详细级别:如果非零,则打印进度消息。高于50时,输出被发送到标准输出。消息的频率随着详细程度的增加而增加。如果大于10,则报告所有迭代
如果您真的想知道
verbosity
数字的作用,可以查看一下。我说不出来。p.S.:我问这个问题是因为它可以让我监控函数执行的计算进度。用GridSearchCV(verbose=100)
初始化对象,它会自己打印进度消息。谢谢Blender。为什么是100?如果我选择50或150,会有什么变化?谢谢你的回答。