暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python循环并行,sklearn大神们早已经为你封装好了一个函数

懒麻蛇 2021-08-18
3644


花了一天时间纠结代码效率问题,把代码效率提高了一大截。其中不得不提的是sklearn大神们组装好的并行函数 Parallel. 函数和用法简洁明了,省去了使用multiprocessing繁琐的过程。


官网的例子:


简单说就是自己定义一个需要并行的函数,然后调用Parallel,再用delayed传入参数。并行的函数的return需要是list,这样并行后输出的结果才能正常,有序的保存。以一个自己写的cross-validation并行每一个Fold为例:


Step 1. 定义需要并行的函数,train_index 和 test_index 是每一个循环的“指针”,这个函数只需要定义到每一个循环内是怎么运行的。返回需要是List

Step 2. 使用parallel运行该函数,用delayed传入参数和需要循环的参数,train_index和test_index用 for循环遍历即可。注意sklearn做交叉验证的时候,需要使用相同的estimator,所以这里用了clone.

Step 3. 收割结果。result1和result2会以成对的Tuple出现在all_results中, 使用zip重新组装下就可以得到result1和result2了

之前很怀念matlab一个parafor搞定的设定,sklearn的玩法其实跟parafor的感觉差不多,不过因为返回的是list,可返回的内容更灵活。






文章转载自懒麻蛇,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论