为了账号安全,请及时绑定邮箱和手机立即绑定

Linux (armv7l) 上的多处理池中的 Scikit-learn train_test

Linux (armv7l) 上的多处理池中的 Scikit-learn train_test

慕田峪7331174 2021-06-12 11:01:22
在 Rasbperry Pi 3 上运行 Python 时,我在多处理池中使用 train_test_split 遇到了一些奇怪的行为。我有这样的事情:def evaluate_Classifier(model,Features,Labels,split_ratio):  X_train, X_val, y_train, y_val = train_test_split(Features,Labels,test_size=split_ratio)...iterations=500pool = multiprocessing.Pool(4)results = [pool.apply_async(evaluate_Classifier, args=(w,Current_Features,Current_Labels,0.35)) for i in range(iterations)]output = [p.get() for p in results]pool.close()pool.join()现在上面的代码在 Windows 7 Python 3.5.6 上完美运行,实际上 4 个线程中的每一个都会有不同的训练/测试分割。但是,当我在 Raspberry Pi 3 (scikit-learn 0.19.2) 上运行它时,似乎 4 个线程以完全相同的方式拆分数据,因此所有线程产生完全相同的结果。接下来的 4 个线程将再次拆分数据(这次不同),但它们之间的方式仍然完全相同,依此类推....我什至尝试使用带有 random_state=np.random.randint 的 train_test_split,但它没有帮助。任何想法为什么这在 Windows 中有效,但在 raspberry Pi 3 上似乎不能正确并行化?
查看完整描述

2 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

与其设置随机状态,不如在拆分之前尝试对数据进行混洗。您可以通过设置参数来做到这一点:shuffle=True。


查看完整回答
反对 回复 2021-06-16
  • 2 回答
  • 0 关注
  • 294 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号