Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark ML(数据帧API)手动类别分配_Java_Apache Spark - Fatal编程技术网

Java Spark ML(数据帧API)手动类别分配

Java Spark ML(数据帧API)手动类别分配,java,apache-spark,Java,Apache Spark,Java Spark ML(数据帧API)手动类别分配 我正在使用Spark的JavaAPI来运行一个随机林,我在设置包含分类变量和连续变量的混合数据时遇到了问题 我有一个数据集,我正在加载一个拼花地板文件,其中有字符串、双字符等。。。我想转换成一个数据集,用于随机林 我知道我需要将数据转换成向量(通过VectorAssembler之类的工具),但问题是分类变量。我不知道如何手动将向量分配到分类变量中。我不想使用一个热编码(因为我有一些包含30多个类别的变量),所以我使用StringIndexe

Java Spark ML(数据帧API)手动类别分配

我正在使用Spark的JavaAPI来运行一个随机林,我在设置包含分类变量和连续变量的混合数据时遇到了问题

我有一个数据集,我正在加载一个拼花地板文件,其中有字符串、双字符等。。。我想转换成一个数据集,用于随机林

我知道我需要将数据转换成向量(通过VectorAssembler之类的工具),但问题是分类变量。我不知道如何手动将向量分配到分类变量中。我不想使用一个热编码(因为我有一些包含30多个类别的变量),所以我使用StringIndexer来创建进入向量的类别列

我遇到的关键问题是,我不能使用VectorIndexer()的setMaxCategories()选项来设置分类变量,因为我有一些双精度列,它们的唯一值少于30个。我的分类变量也有不同的级别

我基本上想要一种方法来手动分配“哪些”列(通过索引或其他方式)将是分类列,但我找不到任何方法。我肯定这里缺少一些类或方法

我想出了一个“愚蠢”的办法,但肯定有更好的办法。“愚蠢”的方法是:

  • 对于每个单独的字符串列
    • 运行StringIndexer(创建具有索引而不是字符串的新列)
    • 运行VectorAssembler(仅使用上面的1列创建向量)
    • 运行VectorIndexer(使用上面的单列向量输入,并在setMaxCategories()中输入一个无法达到的高值)
  • 将所有单列向量与所有列合并为一个向量
  • 一定有更好的方法来做到这一点,……有人有什么想法吗