GridSearchCV 没有关于高冗长的报告

GridSearchCV no reporting on high verbosity

好的,我只想说,我是 SciKit-Learn 和数据科学的新手。但这是问题所在,也是我目前对该问题的研究。代码在底部。

总结

我正在尝试使用 BernoulliRBM 进行类型识别(例如数字),并且正在尝试使用 GridSearchCV 找到正确的参数。但是我没有看到任何事情发生。通过大量使用详细设置的示例,我看到了输出和进度,但对于我的它只是说,

Fitting 3 folds for each of 15 candidates, totalling 45 fits

然后它坐在那里什么都不做....永远(或 8 小时,我在高冗长设置下等待的最长时间)。

我有一个相当大的数据集(1000 个二维数组,每个大小为 428 x 428),所以这可能是问题所在,但我也将详细程度设置为 10,所以我觉得我应该看到某种输出或进度。另外,就我的 "target" 而言,它要么是 0 要么是 1,它要么是我正在寻找的对象 (1),要么不是 (0)。

之前的研究

我真的很感激在这里朝着正确的方向轻推。感谢您考虑我的问题。

我注意到当 运行 线程超过 1 个时,GridSearch 不输出任何内容。 当所有线程都完成后,它会打印出所有内容。 并且多线程在 Windows 中不起作用 - 仅在 Linux.

中使用 n_jobs > 1

好吧,我只是总结一下我在过去几天里所了解的一切。

  • 在 Windows 8.1 上,如果您仍然希望它冗长,请不要将 n_jobs 设置为 1 以外的任何值。
  • 在我的例子中,即使我只有 n_jobs = 1,我所有的处理器内核仍然参与计算,所以这是一个错误或者应该更好地记录。
  • 我在使用 csr 矩阵列表时犯了一个可怕的错误,所以基本上,请阅读文档,然后在提问之前再阅读一遍。

再次感谢@Barmaley.exe 的初步提示。

您正在使用 ipython 笔记本和 Python 2.x 吗?如果是,则多处理模块不适用于此组合。您可以将 ipython 笔记本导出(另存为)为常规 .py 文件,然后 运行 使用常规 python 解释器将其导出(另存为)。然后你可以使用 n_jobs=-1

当你在 jupyter notebook 中 运行 GridSearchCV with n_jobs ≠ 1 时,搜索的输出可以在你用来启动 jupyter notebook 的终端中找到。