gpt4 book ai didi

scala - 如何将 Spark 中的分类变量转换为一组编码为 {0,1} 的列?

转载 作者:行者123 更新时间:2023-12-02 09:18:02 25 4
gpt4 key购买 nike

我正在尝试使用 Spark MLlib(使用 Scala)对包含分类变量的数据集执行逻辑回归(LogisticRegressionWithLBFGS)。我发现 Spark 无法使用这种变量。

在 R 中,有一种简单的方法可以处理此类问题:我将变量转换为因子(类别),因此 R 创建一组编码为 {0,1} 指示变量的列。

如何使用 Spark 执行此操作?

最佳答案

使用VectorIndexer ,您可以告诉索引器某个字段可能具有的不同值(基数)的数量,以便使用 setMaxCategories() 方法将其视为分类。

val indexer = new VectorIndexer()
.setInputCol("features")
.setOutputCol("indexed")
.setMaxCategories(10)

来自Scaladocs :

Class for indexing categorical feature columns in a dataset of Vector.

This has 2 usage modes:

Automatically identify categorical features (default behavior)

This helps process a dataset of unknown vectors into a dataset with some continuous features and some categorical features. The choice between continuous and categorical is based upon a maxCategories parameter.

Set maxCategories to the maximum number of categorical any categorical feature should have.

E.g.: Feature 0 has unique values {-1.0, 0.0}, and feature 1 values {1.0, 3.0, 5.0}. If maxCategories = 2, then feature 0 will be declared categorical and use indices {0, 1}, and feature 1 will be declared continuous.

我发现这是提取分类值的一种方便(尽管粗粒度)的方法,但要注意,在任何情况下,如果您有一个想要连续的数量较低的字段(例如,大学生的年龄与原籍国或美国州)。

关于scala - 如何将 Spark 中的分类变量转换为一组编码为 {0,1} 的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30104726/

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