如何解决为什么 sklearn LDA 转换非常慢?
我正在使用sickit-learn 潜在狄利克雷分配进行主题建模。 lda_object 适合文本语料库。现在,我们将其拟合到一个文本中以了解它的主题权重。
def append_lda_features(df,lda_vectorizer,tfidf+vector):
from time import time
st = time()
lda_vector = lda_vectorizer.transform(tfidf_vector)
print(time() - st)
lda_vector = pd.DataFrame(lda_vector)
lda_vector.columns = ['lda_word_'+str(i)
for i in range(lda_vectorizer.n_components)]
return pd.concat([df,lda_vector],axis=1)
这是大约 0.67
秒的打印值,这确实很高。考虑到我的 lda 只包含 15 个组件,而 vectorizer 有 100000 个标记:
LatentDirichletAllocation(n_components=15,n_jobs=30,verbose=1)
我应该怎样做才能使 LDA 工作得更快?
解决方法
当您要在单个文本向量上转换 lda
时,最好不要设置 n_jobs = 1
。
那样,它不会花费太多时间,因为它不需要首先并行化工作。这显然需要一个明显的开销。
def append_lda_features(df,lda_vectorizer,tfidf+vector):
from time import time
st = time()
lda_vectorizer.n_jobs = 1
lda_vector = lda_vectorizer.transform(tfidf_vector)
print(time() - st)
lda_vector = pd.DataFrame(lda_vector)
lda_vector.columns = ['lda_word_'+str(i)
for i in range(lda_vectorizer.n_components)]
return pd.concat([df,lda_vector],axis=1)
这个给了我大约 0.01
秒,而不是在 0.6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。