gpt4 book ai didi

scala - 检索 Spark Mllib StringIndexer 列映射

转载 作者:行者123 更新时间:2023-12-02 04:57:58 26 4
gpt4 key购买 nike

如何从经过训练的 Spark MLlib StringIndexerModel 中获取映射?

val stringIndexer = new StringIndexer()
.setInputCol("myCol")
.setOutputCol("myColIdx")
val stringIndexerModel = stringIndexer.fit(data)
val res = stringIndexerModel.transform(data)

上面的代码将向我的 DataFrame 添加一个 myColIdx,将 myCol 中的值映射到基于值频率的索引。即最常见的值 -> 0,第二常见的值 -> 1,等等...

如何从模型中检索该映射?如果我序列化/反序列化模型,映射是否稳定(即我是否保证转换后得到相同的结果)?

最佳答案

StringIndexerModel 使用 labels 属性公开映射:

stringIndexerModel.labels: Array[String]

其中值对应于连续标签,例如:

val data = Seq("foo", "bar", "foo", "bar", "foobar", "bar").toDF("myCol")

您将获得以下标签:

import org.apache.spark.ml.feature.IndexToString

Array(bar, foo, foobar)

其中 bar 索引为 0.0,foo 索引为 1.0,foobar 索引为 2.0。这是模型的属性,在保存时保留。

当在Pipeline中使用时,您还可以使用 IndexToString它将使用列元数据将索引映射回标签。

indexToString.transform(stringIndexerModel.transform(data)).show
+------+--------+-------------+
| myCol|myColIdx|myColReversed|
+------+--------+-------------+
| foo| 1.0| foo|
| bar| 0.0| bar|
| foo| 1.0| foo|
| bar| 0.0| bar|
|foobar| 2.0| foobar|
| bar| 0.0| bar|
+------+--------+-------------+

关于scala - 检索 Spark Mllib StringIndexer 列映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43575374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com