1
我真的很想使用火花推动的新管道概念,但是由于IDF对象需要适合数据并进行转换,所以我不知道如何使用它。我想做这个;如何在火花管道中使用IDF?
Tokenizer tk = new Tokenizer()
.setInputCol("text")
.setOutputCol("words");
HashingTF tf = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tk.getOutputCol())
.setOutputCol("rawFeatures");
IDF idf = new IDF()
.setInputCol(tf.getOutputCol())
.setOutputCol("IDFFeatures");
Pipeline pipe = new Pipeline()
.setStages(new PipeLineStage[] {tk, tf, idf})
但是除非我误解了这不适用于idf。
这个答案是正确的,但是我的理解是IDF只能应用于训练集而不应用于测试集,因为IDF基于整个语料库的词频。在那种情况下,我如何才能操纵管道仅在培训阶段使用IDF? –
@danieln您可以将DataFrame拆分为两个不同的数据框,并使用其中一个来提供流水线 –
正确,但流水线仍然会将IDF应用于测试集。 –