【发布时间】:2012-10-15 14:48:39
【问题描述】:
我让 linearsvc 使用 load_file 方法针对训练集和测试集工作,我试图让它在多处理器环境中工作。
如何在LinearSVC().fit() LinearSVC().predict() 上进行多处理工作?我对 scikit-learn 的数据类型还不是很熟悉。
我也在考虑将样本拆分为多个数组,但我不熟悉 numpy 数组和 scikit-learn 数据结构。
这样做会更容易放入 multiprocessing.pool() 中,这样,将样本分成块,训练它们并稍后组合训练集,它会工作吗?
编辑: 这是我的场景:
可以说,我们在训练样本集中有 100 万个文件,当我们想在多个处理器上分配 Tfidfvectorizer 的处理时,我们必须拆分这些样本(对于我的情况,它只有两个类别,所以假设每个样本 500000 个培训) 。我的服务器有 24 个 48 GB 的内核,所以我想将每个主题分成 1000000 / 24 个块并在它们上处理 Tfidfvectorizer。就像我会对测试样本集以及 SVC.fit() 和决定() 做的那样。是否有意义?
谢谢。
PS:请不要关闭这个。
【问题讨论】:
-
如果我错了,请纠正我,但 SVM 通常不会花很长时间来做出决定。并行执行不同样本的解码可能比并行执行一个样本的解码更有意义。
-
如果我要对 2100 万份文档执行此操作怎么办?会不会很久?
-
我也在考虑不同的样本,是否可以将不同的样本拆分为每个流程后重新组合?
-
我想我没有得到你的问题。样本是独立的。为什么你必须重新组合一些东西?
-
Tfidfvectorizer在中心词汇表中是不可并行的。我们要么需要一个共享词汇表(例如,在集群上使用一个 redis 服务器),要么实现一个尚不存在的HashVectorizer。
标签: python multithreading numpy machine-learning scikit-learn