Java Spark ML(数据帧API)手动类别分配
Java Spark ML(数据帧API)手动类别分配 我正在使用Spark的JavaAPI来运行一个随机林,我在设置包含分类变量和连续变量的混合数据时遇到了问题 我有一个数据集,我正在加载一个拼花地板文件,其中有字符串、双字符等。。。我想转换成一个数据集,用于随机林 我知道我需要将数据转换成向量(通过VectorAssembler之类的工具),但问题是分类变量。我不知道如何手动将向量分配到分类变量中。我不想使用一个热编码(因为我有一些包含30多个类别的变量),所以我使用StringIndexer来创建进入向量的类别列 我遇到的关键问题是,我不能使用VectorIndexer()的setMaxCategories()选项来设置分类变量,因为我有一些双精度列,它们的唯一值少于30个。我的分类变量也有不同的级别 我基本上想要一种方法来手动分配“哪些”列(通过索引或其他方式)将是分类列,但我找不到任何方法。我肯定这里缺少一些类或方法 我想出了一个“愚蠢”的办法,但肯定有更好的办法。“愚蠢”的方法是:Java Spark ML(数据帧API)手动类别分配,java,apache-spark,Java,Apache Spark,Java Spark ML(数据帧API)手动类别分配 我正在使用Spark的JavaAPI来运行一个随机林,我在设置包含分类变量和连续变量的混合数据时遇到了问题 我有一个数据集,我正在加载一个拼花地板文件,其中有字符串、双字符等。。。我想转换成一个数据集,用于随机林 我知道我需要将数据转换成向量(通过VectorAssembler之类的工具),但问题是分类变量。我不知道如何手动将向量分配到分类变量中。我不想使用一个热编码(因为我有一些包含30多个类别的变量),所以我使用StringIndexe
- 运行StringIndexer(创建具有索引而不是字符串的新列)
- 运行VectorAssembler(仅使用上面的1列创建向量)
- 运行VectorIndexer(使用上面的单列向量输入,并在setMaxCategories()中输入一个无法达到的高值)