scala - 是否可以访问 spark.ml 管道中的估算器属性?

标签 scala apache-spark pipeline apache-spark-ml

我在 Spark 1.5.1 中有一个 spark.ml 管道,它由一系列转换器和一个 k-means 估计器组成。我希望能够访问 KMeansModel .clusterCenters 拟合管道后,但无法弄清楚如何。是否有与 sklearn 的 pipeline.named_steps 功能等效的 spark.ml 功能?

我找到了 this answer这给出了两个选项。如果我将 k-means 模型从我的管道中取出并单独拟合,第一个工作,但这有点违背了管道的目的。第二个选项不起作用 - 我得到 error: value getModel is not a member of org.apache.spark.ml.PipelineModel .

编辑:示例管道:

import org.apache.spark.ml.feature.{HashingTF, IDF, Tokenizer}
import org.apache.spark.ml.clustering.{KMeans, KMeansModel}
import org.apache.spark.ml.Pipeline

// create example dataframe
val sentenceData = sqlContext.createDataFrame(Seq(
  ("Hi I heard about Spark"),
  ("I wish Java could use case classes"),
  ("K-means models are neat")
  )).toDF("sentence")

// initialize pipeline stages
val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
val hashingTF = new HashingTF().setInputCol("words").setOutputCol("features").setNumFeatures(20)
val kmeans = new KMeans()
val pipeline = new Pipeline().setStages(Array(tokenizer, hashingTF, kmeans))

// fit the pipeline
val fitKmeans = pipeline.fit(sentenceData)

所以现在fitKmeans类型为 org.apache.spark.ml.PipelineModel .我的问题是,如何访问此管道中包含的 k-means 模型计算的聚类中心?如上所述,当 不是 包含在管道中,这可以通过 fitKmeans.clusterCenters 来完成.

最佳答案

回答我自己的问题...我终于在 spark.ml 文档深处偶然发现了一个示例,该示例展示了如何使用 stages 执行此操作PipelineModel成员(member)类(class)。因此,对于我上面发布的示例,为了访问 k-means 聚类中心,请执行以下操作:
val centers = fitKmeans.stages(2).asInstanceOf[KMeansModel].clusterCenters
哪里fitKmeans是一个 PipelineModel 和 2是 k-means 模型在流水线阶段数组中的索引。

引用: this page 上大部分示例的最后一行.

关于scala - 是否可以访问 spark.ml 管道中的估算器属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220046/

相关文章:

intel - 在硬件中断之前如何处理分支预测错误

inheritance - 将scala(2.8)案例类中可变数量的参数传递给父构造函数

java - 无法在项目 Spark-core_2.11 上执行目标

memory - Spark JobServer,释放的内存设置

post - Jenkins 输入管道步骤通过带有 CSRF 的 POST 填充 - 如何?

Swift Siesta 重定向对失败的响应

multithreading - 为什么此Scala代码在一个线程中执行两个Future?

java - 如何使用 sbt 布局从 scala 源访问资源目录中的文件

scala - 如何使用 AKKA 动态创建远程角色并控制它们

hadoop - Spark : yarn cluster mode can't read hdfs path (No such file or directory)