sklearn feature_extraction适合并行化

时间:2017-09-04 14:51:17

标签: python python-3.x scikit-learn

我正在尝试为文本挖掘问题构建一个矢量化器。使用的词汇表应该从给定的文件中拟合。但是,构建字典vocabulary_的文件数量相对较大(比如10 ^ 5)。是否有一种简单的方法来并行化?

更新:正如我发现的,有一个"手册"方式......不幸的是,它仅适用于min_df=1 让我举例说明我为两个核心所做的事情: 将您的输入拆分为两个块。训练矢量化器(比如vec1和vec2),每个都在一个核心和一个数据块上(我使用multiprocessing.Pool)。然后,

# Use sets to dedupe token
vocab = set(vec1.vocabulary_) | set(vec2.vocabulary_)
# Create final vectorizer with given vocabulary
final_vec = CountVectorizer(vocabulary=vocab)
# Create the dictionary final_vec.vocabulary_ 
final_vec._validate_vocabulary()

将完成这项工作。

1 个答案:

答案 0 :(得分:0)

您可以使用mllibapache-spark中包含的机器学习库将处理跨节点的分发。

这是一个关于如何使用它进行特征提取的教程。

您还可以查看 如何优化速度 here的sklearn文档,以获得灵感。