将scikitlearn详细日志写入外部fi

2024-04-16 16:04:38 发布

您现在位置:Python中文网/ 问答频道 /正文

{1}试图克服这个问题,因为我一直在试图解决这个问题会聚。到比较两个模型我需要两种情况下的迭代次数。在

我试图通过verbose = 1来实现这一点,但它在jupyter笔记本中不起作用。我需要访问迭代次数并将其保存为变量,以绘制优化结果。将详细日志写入外部文件可以解决问题,但我无法做到。在

我从前一个问题得到了一些信息 Knowing the number of iterations needed for convergence in SVR scikit-learn 但仍然无法解决问题

下面是我的代码示例:

model_1=SVR(kernel='rbf',C=316,epsilon=0, gamma=0.003162,max_iter=2500,verbose=1)
model_1.fit(tr_sets[:,:2],tr_sets[:,2])

Tags: 文件模型信息verbosemodelsets绘制情况
2条回答

如果我能正确理解scikit中的日志记录,他们根本就没有使用python日志记录基础设施,而是直接使用print(),这使得捕获变得非常困难,尤其是与jupyter笔记本电脑一起使用,后者在捕获标准流方面做了很多工作。在

Aha发现了,它内部使用joblibs冗余打印基础设施,这有我提到的问题。在

https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/cross_validation.py

我以前用过这个技巧来使用普通日志工具来创建joblib:https://github.com/joblib/joblib/issues/190 但我不知道如何在scikit学习这种猴子修补工作

考虑到Christian在他的回答中所说的,如果scikit-learn的日志记录是由print()完成的,为了将其保存到外部文件中,您应该将sys.stdout重定向到您希望的文件,然后任何{}输出都将被打印到文件而不是控制台。在

要将sys.stdout重定向到文件,请执行以下操作:

import sys

sys.stdout=open("external_file.txt","w")
print ("this is a log message")

sys.stdout.close()

现在如果你打开外部_文件.txt,您将在文件中看到“这是一条日志消息”文本

别忘了在脚本末尾关闭文件!sys.stdout.close()

相关问题 更多 >