方法 logLikelihood 和 logPerplexity 不适用于 Spark LDA,如何测量它们?

methods logLikelihood and logPerplexity not available for Spark LDA, how to measure them?

我正在尝试获取 Spark LDA 模型(使用 Spark 2.1)的困惑度和对数似然度。尽管我可以保存模型,但下面的代码不起作用(未找到方法 logLikelihoodlogPerplexity)。

from pyspark.mllib.clustering import LDA
from pyspark.mllib.linalg import Vectors

# construct corpus
# run LDA
ldaModel = LDA.train(corpus, k=10, maxIterations=10)
logll = ldaModel.logLikelihood(corpus)
perplexity = ldaModel.logPerplexity(corpus)

请注意,此类方法不会出现 dir(LDA)

什么是工作示例?

I can do train but not fit. 'LDA' object has no attribute 'fit'

那是因为您使用的是旧的 RDD-based API (MLlib),即

from pyspark.mllib.clustering import LDA # WRONG import

LDAclass确实包括fitlogLikelihoodlogPerplexity方法。

为了使用这些方法,您应该切换到新的方法,dataframe-based API (ML):

from pyspark.ml.clustering import LDA  # NOTE: different import

# Loads data.
dataset = (spark.read.format("libsvm")
    .load("data/mllib/sample_lda_libsvm_data.txt"))

# Trains a LDA model.
lda = LDA(k=10, maxIter=10)
model = lda.fit(dataset)

ll = model.logLikelihood(dataset)
lp = model.logPerplexity(dataset)