我正在学习如何使用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 启动和停止实例引起的。 为什么他们不开始,而是继续开始?
为什么他们不开始,而是继续开始?
因为这不是Python中multiprocessing
模块目前的工作方式,而这正是scikit-learn内部使用的。在Python 3.4中,至少对于POSIX(Linux,Mac OS X)平台,这将得到修复。我不相信CPython开发人员也打算为Windows解决这个问题。scikit-learn的轻量级并行处理正在开发中,但发布还需要一段时间。
您可以尝试使用算法的加速实现 - 例如scikit-learn-intelex - https://github.com/intel/scikit-learn-intelex
对于SVM,您肯定能够获得更高的计算效率,但对于如此大的数据集,这仍然很明显。
首次安装包
pip install scikit-learn-intelex
然后添加你的 python 脚本
from sklearnex import patch_sklearn
patch_sklearn()