【问题标题】:Why do different runs of the same iteration produce different results?为什么同一迭代的不同运行会产生不同的结果?
【发布时间】:2020-01-28 21:22:19
【问题描述】:

我创建了一个字典,其中包含来自 Gensim LDA 模型的文档主题概率。字典上的每次迭代(即使使用相同的确切代码)都会产生稍微不同的值。为什么是这样? (注意,当将相同的代码复制并粘贴到另一个 jupyter 单元中时)

for r in doc_topics[:2]:
    print(r)

第一次生产:

[(5, 0.46771166), (8, 0.09964698), (12, 0.08084056), (55, 0.16801219), (58, 0.07947531), (97, 0.04642806)]
[(8, 0.7273078), (69, 0.06939292), (78, 0.062151615), (101, 0.119957164)]

第二次运行产生:

[(5, 0.47463417), (8, 0.105600394), (12, 0.06531593), (55, 0.16066092), (58, 0.06662597), (97, 0.054465853)]
[(8, 0.7306167), (69, 0.054978732), (78, 0.06831972), (84, 0.025588958), (101, 0.10244013)]

第三:

[(5, 0.4771855), (8, 0.09988891), (12, 0.088423), (55, 0.15682992), (58, 0.058175407), (97, 0.053951494)]
[(8, 0.75193375), (69, 0.059308972), (78, 0.0622621), (84, 0.020040851), (101, 0.09659243)]

等等……

【问题讨论】:

  • 为了重现性,您必须在 LDA 模型中指定随机种子。这样,使用相同的种子总是检查相同的结果。
  • doc_topics 是如何创建的? type(doc_topics) 是什么?您确定在两次运行代码之间没有运行其他代码吗?如果您尝试print(r); print(r) 而不是一次打印,或者如果您在一个单元格内重复您的代码两次怎么办? (您可能希望使用这些详细信息扩展您的问题,以获得更多格式控制,而不是在评论中回答。)

标签: python pandas loops gensim lda


【解决方案1】:

因为在几乎每一个 ml 算法中,在 bith 训练和推理步骤中都存在轻微的随机性。

这个问题已经有人问过了,下次你可以google一下,很快就能找到答案(:

LDA model generates different topics everytime i train on the same corpus

【讨论】:

  • 嗨,让我解释一下 - 我不是复制 LDA,只是上面粘贴的最后几行代码(即,在创建文档主题字典之后,只需运行它,而不是重新生成它)
  • 您不是每次都重新生成文档主题字典吗?
  • 不 - 只是遍历已经生成的字典
【解决方案2】:

要实现可重复性,您需要将random_state 参数指定给LdaModel 构造函数:

https://radimrehurek.com/gensim/models/ldamodel.html

【讨论】:

  • 上面的答案 - 嗨,让我解释一下 - 我没有复制 LDA,只是上面粘贴的最后几行代码(即在创建文档主题字典之后,只需运行它,而不重新生成它)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2021-11-09
相关资源
最近更新 更多