【问题标题】:how to get the prediction of a model in pyspark如何在pyspark中获得模型的预测
【发布时间】:2021-04-30 18:09:58
【问题描述】:

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

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,我想预测它属于哪个类 我尝试了一种在此链接中找到的方法http://web.cs.ucla.edu/~zhoudiyu/tutorial/ 但它不起作用,因为我正在使用 SparkSession 而不是在 sparkContext 中

【问题讨论】:

    标签: pyspark k-means prediction


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      from pyspark.ml.linalg import Vectors
      
      model.predict(Vectors.dense([1,0]))
      

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

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 2019-10-10
        • 2013-08-17
        • 2018-11-03
        • 2021-10-18
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多