Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 ApacheSpark如何将(多个)索引器和编码器连接到管道中_Java_Apache Spark_Apache Spark Mllib - Fatal编程技术网

Java ApacheSpark如何将(多个)索引器和编码器连接到管道中

Java ApacheSpark如何将(多个)索引器和编码器连接到管道中,java,apache-spark,apache-spark-mllib,Java,Apache Spark,Apache Spark Mllib,在对当前数据帧使用机器学习模型之前,我必须应用几个预处理步骤。这包括使用StringIndexer将几个分类列转换为索引列,并使用OneHotEncoder对新列进行编码 我希望将所有转换方法放在一个管道中,以便将其持久化并轻松地应用于传入数据。但是由于索引列还不存在,因此在编码器上调用fit方法失败 如何创建包含所有这些步骤的管道?当PipelineStage将索引器和编码器添加到管道中并在一个步骤中安装整个管道时,您可以同时威胁它们。例如: String INDEX_APPENDIX = "

在对当前数据帧使用机器学习模型之前,我必须应用几个预处理步骤。这包括使用StringIndexer将几个分类列转换为索引列,并使用OneHotEncoder对新列进行编码

我希望将所有转换方法放在一个管道中,以便将其持久化并轻松地应用于传入数据。但是由于索引列还不存在,因此在编码器上调用fit方法失败


如何创建包含所有这些步骤的管道?

当PipelineStage将索引器和编码器添加到管道中并在一个步骤中安装整个管道时,您可以同时威胁它们。例如:

String INDEX_APPENDIX = "_IDX";
String VECTOR_APPENDIX = "_VEC";
ArrayList<PipelineStage> stages = new ArrayList<>();

for (String column : Arrays.asList("col1", "col2" )) {
        stages.add(new StringIndexer().setInputCol(column).setOutputCol(column + INDEX_APPENDIX));
        stages.add(new OneHotEncoder().setInputCol(column + INDEX_APPENDIX).setOutputCol(column +
                VECTOR_APPENDIX));
    }

Pipeline pipeline = new Pipeline()
    .setStages(stages.toArray(new PipelineStage[stages.size()]));

Dataset<Row> processedDf = pipeline.fit(df).transform(df);