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

Python 如何在pyspark中调用预测函数?,python,machine-learning,pyspark,apache-spark-ml,Python,Machine Learning,Pyspark,Apache Spark Ml,我正在将我的sklearn代码转换为pyspark,我能够在链接的帮助下完成它 现在我很难调用预测方法。在使用的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(z

我正在将我的sklearn代码转换为pyspark,我能够在链接的帮助下完成它

现在我很难调用预测方法。在使用的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))
我该怎么做

代码Pypark

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

因此,您首先使用

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)
;虽然使用Spark进行单样本预测听起来有些过分。我要补充的是,我必须将用于预测的数据转换为数据帧格式,而且我必须指定一个标签:
df=Spark.createDataFrame([(1.0,Vectors.dense([10,12,-1,4]),[“标签”,“特征”])
prediction=model.transform(df)
@阿尔瓦罗的评论并不是进行这种广泛讨论的合适空间(另外,你的确切问题还不清楚);请针对您可能遇到的任何问题提出新问题。