我看了gensim LDA模型文档中关于random_state的说明。
random_state ({np.random.RandomState, int}, optional)
- 要么是一个随机状态对象,要么是一个产生随机状态的种子。对重现性很有用。
我一直在尝试把 random_state=42 或
random_seed=42
state=np.random.RandomState(random_seed)
state.randn(1)
random_state=state.randn(1)
其中没有工作。谁能建议我应该怎么做
model=ldaModel(corpus=语料库, id2word=dictionary, num_topics=num_topics, random_state=None)
我在没有使用random_state的情况下使用该函数,它可以工作,但使用random_state时,我得到了错误信息,说LDA模型没有定义。
def compute_coherence_values(dictionary, corpus, texts, limit, random_state, start=2, step=3)。
coherence_values = []
model_list = []
for num_topics in range(start, limit, step):
#model=LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics)
model=ldaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics,
random_state)
model_list.append(model)
coherencemodel = CoherenceModel(model=model, texts=texts, dictionary=dictionary, coherence='c_v')
coherence_values.append(coherencemodel.get_coherence())
return model_list, coherence_values
你代码中的错误在这里。
model=ldaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics,
random_state)
你不能只传递变量 random_state
而不指定标签。仅仅是用一个int号将变量传给方法,对于 ldaModel
方法,因为该方法不取位置参数。该方法采用命名参数。所以应该是这样的。
model=ldaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics,
random_state = random_state)
我有一个LDA的实现,它使用的是 LatentDirichletAllocation
从 sklearn.decomposition
以及 random_state
它需要一个整数。下面是一个例子。
lda_model = LatentDirichletAllocation(n_components=10,
max_iter=10,
learning_method='online',
random_state=100,
batch_size=128,
evaluate_every = -1,
n_jobs = -1 )
这里有一个很好的教程 如何执行和LDA