我想知道是否可以合并多个DictVectorizers。这是一个例子:
最后一步占据了运行时间。我不希望线程返回字典,而是希望它们返回自己的DictVectorizers,并在最后合并DictVectorizers。我意识到这将需要更改生成的DictVectorizer中的索引(因为某些功能可能不存在/存在于不同的文档中)。
TL; DR - 有没有办法从字典列表中并行创建DictVectorizer?
答案 0 :(得分:1)
我认为没有一种有效的方法来组合几个DictVectorizer的输出。你可以通过第一遍只适合构建字典,然后将字典组合成一个具有所有特征的大字典,然后最终转换为传递给每个DictVectorizer的整个集合,最后堆叠结果矩阵,来解决一些问题。这不必要地复杂化,并且不能保证你的速度提升。
并行化是FeatureHasher的理想用例。它还可以接受字典(feature_name,value)。例如:
from sklearn.feature_extraction FeatureHasher
import scipy
vect = FeatureHasher(n_features=4, non_negative=True)
# thread 1
l1 = [{'foo': 1, 'bar': 2}]
X1 = vect.fit_transform(l1)
# thread 2
l2 = [{'foo': 3, 'baz': 1}]
X2 = vect.fit_transform(l2)
最后结合结果:
>>> scipy.sparse.vstack([X1, X2]).toarray()
array([[ 1., 2., 0., 0.],
[ 3., 0., 1., 0.]])
只需确保使用足够多的功能(例如2 ** 18),这样就不会发生碰撞。