Как мне вызвать функцию прогнозирования в pyspark? - PullRequest
0 голосов
/ 30 ноября 2018

Я конвертирую свой код sklearn в pyspark, я смог сделать это с помощью ссылки.

https://towardsdatascience.com/multi-class-text-classification-with-pyspark-7d78d022ed35

Теперь у меня возникают трудности с вызовом метода прогнозирования.В используемом sklearn, приведенный ниже код возвращает значение алгоритма мульти-приведения

predictions = p.predict_proba (['My text 1', 'My text 2'))

totalItens = predictions.shape[0]

for i in range(0, totalItens):
    print('PROD:->')
    print(sorted(zip(p.classes_, predictions[i]), key=lambda x:x[1] , reverse=True))

Как мне сделать pyspark?

Код PySpark

from pyspark.ml.feature import HashingTF, IDF
hashingTF = HashingTF(inputCol="filtered", outputCol="rawFeatures", numFeatures=10000)
idf = IDF(inputCol="rawFeatures", outputCol="features", minDocFreq=5) #minDocFreq: remove sparse terms
pipeline = Pipeline(stages=[regexTokenizer, stopwordsRemover, hashingTF, idf, label_stringIdx])
pipelineFit = pipeline.fit(data)
dataset = pipelineFit.transform(data)

Здесь удалить80/20

#(trainingData, testData) = dataset.randomSplit([0.8, 0.2], seed = 100)

trainingData = dataset
#testData = datasetTrain

lr = LogisticRegression(maxIter=20, regParam=0.3, elasticNetParam=0)
lrModel = lr.fit(trainingData)

#predictions = lrModel.transform(testData)

1 Ответ

0 голосов
/ 01 декабря 2018

В Spark ML (не путать со старым MLlib) метод получения прогнозов в невидимых данных - transform, который применяется как для автономных моделей ML, так и для конвейеров :

enter image description here

Итак, вы сначала подгоняете свой конвейер к данным обучения с помощью

pipeline.fit(data) # no need for pipelineFit

, а затем вы получаете прогнозы для новыхданные с:

pred = pipeline.transform(newData)

То же самое относится и к вашей логистической регрессии;на самом деле вам не нужно lrModel - вам просто нужно:

lr = LogisticRegression(maxIter=20, regParam=0.3, elasticNetParam=0) # define model
lr.fit(trainingData) # fit to training data
predictions = lr.transform(testData) # get predictions of test data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...