2

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

在测试交叉验证功能时,如果我打开并行计算使用

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 实例的启动和停止引起的。为什么他们不开始,并保持开始?

4

2 回答 2

1

为什么他们不开始,并保持开始?

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

于 2013-10-18T21:53:59.380 回答
0

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

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

第一个安装包

pip install scikit-learn-intelex

然后添加你的python脚本

from sklearnex import patch_sklearn
patch_sklearn()
于 2022-02-12T09:21:40.803 回答