Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GridSearchCV:每次函数完成循环时打印一些表达式_Python_Function_Loops_Scikit Learn_Grid Search - Fatal编程技术网

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

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,依此类推 请注意,困难在于我没有对函数进行编程,它是某个软件包中预先存在的函数(更具体地说,我感兴趣的

假设您在Python中有一些函数通过循环工作:例如,它可能是一个函数,用于对数组中的所有元素计算某个数学表达式,例如
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,会有什么变化?谢谢你的回答。