如何在Spark LDA中获得困惑和记录可能性?

时间:2018-01-22 14:09:46

标签: apache-spark machine-learning pyspark cluster-analysis lda

我试图让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)

什么是一个有效的例子?

1 个答案:

答案 0 :(得分:1)

  

我可以训练但不适合。 'LDA'对象没有属性'fit'

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

from pyspark.mllib.clustering import LDA # WRONG import

LDA类确实包括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)