【问题标题】:I get Runtime Warning: invalid value encountered in double_scalars and divide by zero encountered in double_scalars when using ldaseq我收到运行时警告:使用 ldaseq 时在 double_scalars 中遇到无效值并在 double_scalars 中遇到除以零
【发布时间】:2021-01-25 17:17:10
【问题描述】:
在 gensim 中使用 ldaseqmodel 时,我收到了运行时间警告:
D:\Anaconda3\lib\site-packages\gensim\models\ldaseqmodel.py:1474:
RuntimeWarning:在双标量中遇到无效值
收敛 = np.fabs((lhood_old - lhood) / (lhood_old * total))
D:\Anaconda3\lib\site-packages\gensim\models\ldaseqmodel.py:293:
RuntimeWarning:在 double_scalars 中遇到除以零
收敛 = np.fabs((bound - old_bound) / old_bound)
这是代码:
ldaseq = LdaSeqModel(corpus=corpus_comments, id2word=dictionary_comments,time_slice=time_docs, num_topics=5, chunksize=10,lda_model=model)
数据集大约有 50,000 篇博客文章。
请帮帮我!非常感谢!
【问题讨论】:
标签:
python
python-3.x
numpy
gensim
lda
【解决方案1】:
您收到的第一个警告;即
D:\Anaconda3\lib\site-packages\gensim\models\ldaseqmodel.py:1474: RuntimeWarning: invalid value encountered in double_scalars
converged = np.fabs((lhood_old - lhood) / (lhood_old * total))
是因为您的语料库中有空文档。要解决此问题,请先找出语料库中的空文档,然后将其从语料库中删除。
现在,第二个警告请看this的回答,我已经在那里详细解释了,希望对你有所帮助。
简而言之,您会收到第二个警告,即
D:\Anaconda3\lib\site-packages\gensim\models\ldaseqmodel.py:293: RuntimeWarning: divide by zero encountered in double_scalars
convergence = np.fabs((bound - old_bound) / old_bound)
因为old_bound 在gensim 的ldaseqmodel 的源代码中被初始化为zero,因为在这个表达式(bound - old_bound) / old_bound 中你实际上是在将上半部分除以零,这导致警告。因此,您只需忽略该警告,因为在第一次迭代后,old_bound 的值会更新,因此您将不会再次看到该警告。