提问者:小点点

方法对Spark LDA不可用的logLik可能性和logPerplexity,如何测量它们?[关闭]


我试图获得Spark LDA模型的困惑和对数可能性(Spark 2.1)。下面的代码不起作用(方法logLikNathanlogPerplexity未找到),尽管我可以保存模型。

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)

一个有效的例子是什么?


共1个答案

匿名用户

我可以参加训练,但不适合LDA“对象没有“适合”属性

这是因为您使用的是旧的、基于RDD的API(MLlib),即。

from pyspark.mllib.clustering import LDA # WRONG import

LDA类确实不包括filogLikNathanlogPerplexity方法。

为了使用这些方法,您应该切换到新的、基于数据帧的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)