Как получить недоумение и зарегистрировать вероятность в Spark LDA?

Я пытаюсь получить недоумение и записать вероятность модели 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),

Какой будет рабочий пример?

1 ответ

Решение

Я могу тренироваться, но не в форме. Объект 'LDA' не имеет атрибута 'fit'

Это потому, что вы работаете со старым, основанным на RDD API (MLlib), т.е.

from pyspark.mllib.clustering import LDA # WRONG import

чья LDA класс действительно не включает fit, logLikelihood, или же logPerplexity методы.

Для работы с этими методами вы должны переключиться на новый 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)
Другие вопросы по тегам