2013-10-17 104 views
2

我正在学习如何使用scikit-learn。交叉验证,scikit学习,并行速度较慢

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

+2

您的数据可能不够大,无法克服并行化开销。 –

+1

可能是这种情况,但如果是这样的话,那么并行化非常差,因为我在Matlab中运行了类似的脚本,并且性能下降并没有那么糟糕。我希望这个问题是由于我对工具的理解不够,而不是工具不适合我的需求。 – Ginger

回答

1

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

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