Spark:我可以同时使用2个估算器调整管道

时间:2017-09-22 04:07:46

标签: apache-spark machine-learning apache-spark-mllib text-mining

我有一个流程(Spark中的管道),如下所示:

  1. 我有一个DataFrame A,它有字符串

  2. 创建Word2Vec估算工具

  3. 创建Word2VecModel转换器

  4. 将Word2VecModel应用于DataFrame A,以创建具有向量的DataFrame B

  5. 创建KMean估算工具

  6. 创建KMeanModel转换器

  7. 将KMeanModel应用于DataFrame B,以进行群集

  8. 在这个流程中,我们有2个估算器和2个变换器模型,因此我们需要2个管道,并分别调整每个管道。

    但我们可以在一个管道中进行调整吗?我不知道怎么做,所以哪种方法是调整流量的最好方法?

    修改: 在Spark-ml lib中,管道组件的输入只是数据帧,输出是数据帧或变换器。但是如果我们在1个流水线上链接2个估计器,则估计器1的输出将是变换器,因此您无法继续在同一个流水线上链接下一个估算器2(仅接受数据帧作为输入)。那么我们是否有任何调整2估计器的技巧?

1 个答案:

答案 0 :(得分:0)

这里没有冲突。 Spark ML Pipeline可以包含任意数量的Estimators。您所要做的就是确保输出列名称是唯一的。

val kmeans: KMeans = ???
kmeans.setPredictionCol("k_means_prediction")

val word2vec: Word2Vec = ???
word2vec.setOutputCol("word2vec_output")

new Pipeline().setStages(Array(kmeans, word2vec))

然而,不同的模型通常需要不同的特征工程步骤,但在实践中并不是很有用。