Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        2年前关闭。
                                                                                            
                
        


我正在尝试获得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)提出的。

什么是可行的例子?

最佳答案

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


那是因为您正在使用旧的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)

10-04 22:23
查看更多