我有一个流程(Spark中的管道),如下所示:
我有一个DataFrame A,它有字符串
创建Word2Vec估算工具
创建Word2VecModel转换器
将Word2VecModel应用于DataFrame A,以创建具有向量的DataFrame B
创建KMean估算工具
创建KMeanModel转换器
将KMeanModel应用于DataFrame B,以进行群集
在这个流程中,我们有2个估算器和2个变换器模型,因此我们需要2个管道,并分别调整每个管道。
但我们可以在一个管道中进行调整吗?我不知道怎么做,所以哪种方法是调整流量的最好方法?
修改: 在Spark-ml lib中,管道组件的输入只是数据帧,输出是数据帧或变换器。但是如果我们在1个流水线上链接2个估计器,则估计器1的输出将是变换器,因此您无法继续在同一个流水线上链接下一个估算器2(仅接受数据帧作为输入)。那么我们是否有任何调整2估计器的技巧?
答案 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))
然而,不同的模型通常需要不同的特征工程步骤,但在实践中并不是很有用。