Apache spark LDA模型预测非电阻

Apache spark LDA模型预测非电阻,apache-spark,pyspark,apache-spark-mllib,lda,apache-spark-ml,Apache Spark,Pyspark,Apache Spark Mllib,Lda,Apache Spark Ml,我训练了一个LDA模型并将其加载到环境中以转换新数据: from pyspark.ml.clustering import LocalLDAModel lda = LocalLDAModel.load(path) df = lda.transform(text) 该模型将添加一个名为topicDistribution的新列。在我看来,对于相同的输入,这个分布应该是相同的,否则这个模型是不一致的。然而,这在实践中并不存在 我可以问一下原因和解决方法吗?LDA在培训时使用随机性,并根据实施情况推

我训练了一个LDA模型并将其加载到环境中以转换新数据:

from pyspark.ml.clustering import LocalLDAModel

lda = LocalLDAModel.load(path)
df = lda.transform(text)
该模型将添加一个名为topicDistribution的新列。在我看来,对于相同的输入,这个分布应该是相同的,否则这个模型是不一致的。然而,这在实践中并不存在


我可以问一下原因和解决方法吗?

LDA在培训时使用随机性,并根据实施情况推断新数据。Spark中的实现基于EM映射推断,因此我相信它在训练模型时只使用随机性。这意味着每次训练和运行算法时,结果都会不同

为了在相同输入和相同参数下运行时获得相同的结果,可以在训练模型时设置随机种子。例如,要将随机种子设置为1:

model = LDA.train(data, k=2, seed=1)
要在转换新数据时设置种子,请创建一个参数映射以覆盖默认值(
None
for seed)


有关覆盖模型参数的详细信息,请参阅。

问题在于我正在从本地加载模型。那么,在我加载种子时,有没有办法设置种子?@Ippon:我相信在转换数据时,您可以覆盖默认参数。在答案中添加了信息(我自己目前无法测试它,但它应该可以正常工作)。
lda = LocalLDAModel.load(path)
paramMap[lda.seed] = 1L
df = lda.transform(text, paramMap)