我正在尝试使用 Spark MLlib(使用 Scala)对包含分类变量的数据集执行逻辑回归(LogisticRegressionWithLBFGS)。我发现 Spark 无法使用这种变量。
在 R 中,有一种简单的方法来处理此类问题:我将变量转换为因子(类别),因此 R 创建一组编码为 {0,1} 指示变量的列。
我如何使用 Spark 执行此操作?
Using 矢量索引器,您可以告诉索引器某个字段可能具有的不同值(基数)的数量,以便使用 setMaxCategories() 方法将其视为分类。
val indexer = new VectorIndexer()
.setInputCol("features")
.setOutputCol("indexed")
.setMaxCategories(10)
From 斯卡拉文档:
用于索引 Vector 数据集中的分类特征列的类。
它有 2 种使用模式:
自动识别分类特征(默认行为)
这有助于将未知向量的数据集处理成具有某些特征的数据集
连续特征和一些分类特征。
连续型和分类型之间的选择基于 maxCategories 参数。
将 maxCategories 设置为任何分类特征应具有的最大分类数。
例如:特征 0 具有唯一值 {-1.0, 0.0},特征 1 具有唯一值 {1.0, 3.0, 5.0}。如果 maxCategories = 2,则特征 0 将被声明为分类并使用索引 {0, 1},而特征 1 将被声明为连续。
我发现这是一种提取分类值的方便(虽然粗粒度)的方法,但要注意,在任何情况下,如果您有一个想要连续的数量较低的字段(例如,大学生的年龄与原籍国或美国州) )。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)