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