Python 无法修复gensim中LDA模型中的种子值
当使用LDA模型时,每次我都会得到不同的主题,我希望复制相同的主题集。我在谷歌搜索过类似的问题,比如 我通过Python 无法修复gensim中LDA模型中的种子值,python,numpy,gensim,Python,Numpy,Gensim,当使用LDA模型时,每次我都会得到不同的主题,我希望复制相同的主题集。我在谷歌搜索过类似的问题,比如 我通过num.random.seed(1000)修复了文章中所示的种子,但它不起作用。我阅读了ldamodel.py并找到以下代码: def get_random_state(seed): """ Turn seed into a np.random.RandomState instance. Method originally from maciejkula/glov
num.random.seed(1000)
修复了文章中所示的种子,但它不起作用。我阅读了ldamodel.py
并找到以下代码:
def get_random_state(seed):
"""
Turn seed into a np.random.RandomState instance.
Method originally from maciejkula/glove-python, and written by @joshloyal
"""
if seed is None or seed is numpy.random:
return numpy.random.mtrand._rand
if isinstance(seed, (numbers.Integral, numpy.integer)):
return numpy.random.RandomState(seed)
if isinstance(seed, numpy.random.RandomState):
return seed
raise ValueError('%r cannot be used to seed a numpy.random.RandomState'
' instance' % seed)
所以我使用代码:
lda = models.LdaModel(
corpus_tfidf,
id2word=dic,
num_topics=2,
random_state=numpy.random.RandomState(10)
)
但它仍然不起作用。由
语料库生成的词典。词典可能不同于同一语料库(例如相同的单词,但顺序不同)。因此,每次都应该修复词典以及种子以获得相同的主题。下面的代码可能有助于修复词典:
dic = corpora.Dictionary(corpus)
dic.save("filename")
dic=corpora.Dictionary.load("filename")
由语料库生成的词典。词典
可能与相同的语料库不同(例如相同的单词但不同的顺序)。因此,每次都应该修复词典以及种子以获得相同的主题。下面的代码可能有助于修复词典:
dic = corpora.Dictionary(corpus)
dic.save("filename")
dic=corpora.Dictionary.load("filename")
我同意@Marcel.Shen的观点,即您应该将输入字典保存一次并再次使用,而不是每次都重新生成,从而将其修复到LDA模型。这也可能是你得到不同结果的原因
但我认为您得到不同结果的主要原因是,您每次运行时都会随机将随机状态设置在0-10之间。只需将随机种子值设置为常数,如1 我同意@Marcel.Shen的观点,即您应该将输入字典保存一次并再次使用,而不是每次都重新生成,从而将其修复到LDA模型。这也可能是你得到不同结果的原因
但我认为您得到不同结果的主要原因是,您每次运行时都会随机将随机状态设置在0-10之间。只需将随机种子值设置为常数,如1 longtime not log in stackoverflow(长时间不登录stackoverflow,我不知道是否为时已晚)…您可以将random_状态设置为0,而不是从random函数生成的值longtime not log in stackoverflow(长时间不登录stackoverflow,我不知道是否为时已晚)…您可以将random_状态设置为0,而不是从random函数生成的值