【问题标题】:Cross Validation, scikit-learn, parallel is slower交叉验证,scikit-learn,并行比较慢
【发布时间】:2013-10-17 22:30:22
【问题描述】:

我正在学习如何使用 scikit-learn。

在测试cross validation function时,如果我打开并行计算使用

cross_validation.cross_val_score(svc, X_digits, y_digits, cv=kfold, n_jobs=-1)

结果比我关闭它要慢很多

cross_validation.cross_val_score(svc, X_digits, y_digits, cv=kfold, n_jobs=1)

我怎样才能阻止这种情况?

我在 64 位 Windows 7 机器上使用 PyDev、Anacondas 3.3。从任务管理器来看,性能下降似乎是由许多 Python 实例的启动和停止引起的。为什么他们不启动,并保持启动?

【问题讨论】:

  • 您的数据可能不够大,无法克服并行化的开销。
  • 可能是这样,但如果是这样的话,并行性很差,因为我在 Matlab 中运行了一个类似的脚本,并且性能损失几乎没有那么糟糕。我希望问题是由于我对工具的了解不足,而不是工具不适合我的需求。

标签: python pydev scikit-learn


【解决方案1】:

为什么他们不启动,并保持启动?

因为目前 Python 中的 multiprocessing 模块不是这样工作的,而这正是 scikit-learn 内部使用的。在 Python 3.4 中,这将至少在 POSIX(Linux、Mac OS X)平台上得到修复。我不相信 CPython 开发人员也打算为 Windows 解决这个问题。 scikit-learn 的轻量级并行处理是 in the works,但距离发布还有一段时间。

【讨论】:

    【解决方案2】:

    您可以尝试使用算法的加速实现 - 例如 scikit-learn-intelex - https://github.com/intel/scikit-learn-intelex

    对于 SVM,您肯定能够获得更高的计算效率,但是对于如此大的数据集,这仍然会很明显。

    第一个安装包

    pip install scikit-learn-intelex
    

    然后添加你的python脚本

    from sklearnex import patch_sklearn
    patch_sklearn()
    

    【讨论】:

      猜你喜欢
      • 2016-04-25
      • 2021-10-25
      • 2017-09-02
      • 1970-01-01
      • 2017-04-12
      • 2018-10-17
      • 2016-05-09
      • 2012-01-07
      • 2015-06-22
      相关资源
      最近更新 更多