如何在pyspark中获得模型的预测

how to get the prediction of a model in pyspark

我已经使用 pyspark 开发了一个聚类模型,我只想预测一个向量的 class,这里是代码

spark = SparkSession.builder.config("spark.sql.warehouse.dir", 
            "file:///C:/temp").appName("Kmeans").getOrCreate()
 vecAssembler = VectorAssembler(inputCols=FEATURES_COL, outputCol="features")
 df_kmeans = vecAssembler.transform(df).select('LCLid', 'features')
 k = 6
 kmeans = KMeans().setK(k).setSeed(1).setFeaturesCol("features")
 model = kmeans.fit(df_kmeans)
 centers = model.clusterCenters()
 predictions = model.transform(df_kmeans)
 transformed = model.transform(df_kmeans).select('LCLid', 'prediction')
 rows = transformed.collect()

假设我有一个特征向量 V,我想预测它属于哪个 class 我尝试了我在这个 link http://web.cs.ucla.edu/~zhoudiyu/tutorial/ 中找到的方法 但它不起作用,因为我正在使用不在 sparkContext

中的 SparkSession

我看到您已经处理了模型创建中最基本的步骤,您仍然需要将 k-means 模型应用到要进行聚类的向量上(就像您在行中所做的一样) 10) 然后得到你的预测,我的意思是你要做的是重做第 10 行中完成的相同工作,但在新的特征向量 V 上。为了更多地理解这一点,我邀请你阅读 StackOveflow 中发布的这个答案: 。 我还想补充一点,您所关注的示例中的问题不是由于使用 SparkSession 或 SparkContext,因为它们只是 Spark APIs 的入口点,您还可以访问 sparContext通过 sparkSession,因为自 Spark 2.0 以来它由 Databricks 统一。 pyspark k-means 就像 Scikit learn 一样,唯一的区别是 spark python API (PySpark) 中的预定义函数。

您可以使用 Spark ML Vector 调用 kmeans 模型的 predict 方法:

from pyspark.ml.linalg import Vectors

model.predict(Vectors.dense([1,0]))

这里[1,0]只是一个例子。它应该与您的特征向量具有相同的长度。