2

Ich habe ein PipelineModel dafür LDA Spark 2.0 (via PySpark API) erstellt:Sie haben Zugriff auf Methoden aus einzelnen Phasen in PySpark PipelineModel?

def create_lda_pipeline(minTokenLength=1, minDF=1, minTF=1, numTopics=10, seed=42, pattern='[\W]+'): 
    """ 
    Create a pipeline for running an LDA model on a corpus. This function does not need data and will not actually do 
    any fitting until invoked by the caller. 
    Args: 
     minTokenLength: 
     minDF: minimum number of documents word is present in corpus 
     minTF: minimum number of times word is found in a document 
     numTopics: 
     seed: 
     pattern: regular expression to split words 

    Returns: 
     pipeline: class pyspark.ml.PipelineModel 
    """ 
    reTokenizer = RegexTokenizer(inputCol="text", outputCol="tokens", pattern=pattern, minTokenLength=minTokenLength) 
    cntVec = CountVectorizer(inputCol=reTokenizer.getOutputCol(), outputCol="vectors", minDF=minDF, minTF=minTF) 
    lda = LDA(k=numTopics, seed=seed, optimizer="em", featuresCol=cntVec.getOutputCol()) 
    pipeline = Pipeline(stages=[reTokenizer, cntVec, lda]) 
    return pipeline 

ich die Ratlosigkeit auf einem Datensatz mit dem trainierten Modell mit der LDAModel.logPerplexity() Methode berechnet werden soll, so habe ich versucht, den Lauf folgende:

try: 
    training = get_20_newsgroups_data(test_or_train='test') 
    pipeline = create_lda_pipeline(numTopics=20, minDF=3, minTokenLength=5) 
    model = pipeline.fit(training) # train model on training data 
    testing = get_20_newsgroups_data(test_or_train='test') 
    perplexity = model.logPerplexity(testing) 
    pprint(perplexity) 

Dies führt nur in den folgenden AttributeError:

'PipelineModel' object has no attribute 'logPerplexity' 

Ich verstehe, warum dieser Fehler passiert, da die logPerplexity-Methode zu LDAModel gehört, nicht PipelineModel, aber ich frage mich, ob es eine Möglichkeit gibt, von dieser Stufe auf die Methode zuzugreifen.

Antwort

4

Alle Transformatoren in der Pipeline werden in der Eigenschaft stages gespeichert. Extrahieren Sie stages, nehmen Sie die letzte, und Sie sind bereit zu gehen:

+0

Wow, danke. Sparte meinen Speck! –

Verwandte Themen