方法 logLikelihood 和 logPerplexity 不适用于 Spark LDA,如何测量它们?
methods logLikelihood and logPerplexity not available for Spark LDA, how to measure them?
我正在尝试获取 Spark LDA 模型(使用 Spark 2.1)的困惑度和对数似然度。尽管我可以保存模型,但下面的代码不起作用(未找到方法 logLikelihood
和 logPerplexity
)。
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
LDA
class确实不包括fit
、logLikelihood
或logPerplexity
方法。
为了使用这些方法,您应该切换到新的方法,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)
我正在尝试获取 Spark LDA 模型(使用 Spark 2.1)的困惑度和对数似然度。尽管我可以保存模型,但下面的代码不起作用(未找到方法 logLikelihood
和 logPerplexity
)。
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
LDA
class确实不包括fit
、logLikelihood
或logPerplexity
方法。
为了使用这些方法,您应该切换到新的方法,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)