如何在 pyspark 中调用预测函数?

Posted

技术标签:

【中文标题】如何在 pyspark 中调用预测函数?【英文标题】:How do I call prediction function in pyspark? 【发布时间】:2018-11-30 20:03:06 【问题描述】:

我正在将我的 sklearn 代码转换为 pyspark,我能够在链接的帮助下做到这一点。

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

现在我很难调用预测方法。在使用的sklearn中,下面的代码返回multicast算法的值

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】:

在 Spark ML(不要与旧的 MLlib 混淆)中,在看不见的数据中获取预测的方法是 transform,它既适用于独立的 ML 模型,也适用于 pipelines:

因此,您首先将管道与训练数据相匹配

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

【讨论】:

如果您只想预测一个不属于测试数据的新示例怎么办?你只是做pipeline.transform(newTuple) 吗? @Álvaro 是的;虽然使用 Spark 进行单样本预测听起来有点矫枉过正。 我要补充一点,我必须将用于预测的数据转换为 dataFrame 格式,但我必须指定一个标签:df = spark.createDataFrame([(1.0, Vectors.dense([10, 12, -1, 4]))], ["label", "features"])prediction = model.transform(df) @Álvaro 评论不是此类扩展讨论的合适空间(另外尚不清楚您的确切问题是什么);请针对您可能遇到的任何问题提出一个新问题。

以上是关于如何在 pyspark 中调用预测函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在PySpark中调用python函数?

如何在 PySpark 中计算不同窗口大小的滚动总和

PySpark 和 MLLib:随机森林预测的类概率

如何使用 PySpark 并行化我的文件处理程序

如何在 PySpark 上将所有功能组合成一列?

Pyspark - 按两个日期列分组的 UDAF 函数,UDAF 用于计算实际值和预测值之间的 RMSE