Spark Pipeline - 如何从经过训练的特征转换器中提取属性

Spark Pipeline - How to extract attributes from trained features transformer

我需要从经过训练的转换器中提取属性,以便我可以在以后使用它们,例如来自 QuantileDiscretizer 的 bin 边界,来自 StringIndexer 的名称到索引映射。例如,如何在下面的代码中从 "discretizer_trained" 中提取 bin 边界。 我无法通过谷歌搜索以及官方文档找到介绍 https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.ml.feature.QuantileDiscretizer

//https://spark.apache.org/docs/latest/ml-features.html#quantilediscretizer
import org.apache.spark.ml.feature.QuantileDiscretizer

val data = Array((0, 18.0), (1, 19.0), (2, 8.0), (3, 5.0), (4, 2.2))
val df = spark.createDataFrame(data).toDF("id", "hour")

val discretizer = new QuantileDiscretizer()
  .setInputCol("hour")
  .setOutputCol("result")
  .setNumBuckets(3)

val discretizer_trained = discretizer.fit(df)

在 Scala Spark 中 运行:

  discretizer_trained.getSplits

在您的示例中将生成:

  res1: Array[Double] = Array(-Infinity, 5.0, 18.0, Infinity)