我正在使用spark ML管道在真正宽的表格上设置分类模型。这意味着我必须自动生成所有处理列的代码,而不是精确地输入它们中的每一个。我几乎是一个初学者在Scala和火花。当我尝试做如下操作时,我被卡在VectorAssembler()部分:Spark ML VectorAssembler()处理数据帧中的数千列
val featureHeaders = featureHeader.collect.mkString(" ")
//convert the header RDD into a string
val featureArray = featureHeaders.split(",").toArray
val quote = "\""
val featureSIArray = featureArray.map(x => (s"$quote$x$quote"))
//count the element in headers
val featureHeader_cnt = featureHeaders.split(",").toList.length
// Fit on whole dataset to include all labels in index.
import org.apache.spark.ml.feature.StringIndexer
val labelIndexer = new StringIndexer().
setInputCol("target").
setOutputCol("indexedLabel")
val featureAssembler = new VectorAssembler().
setInputCols(featureSIArray).
setOutputCol("features")
val convpipeline = new Pipeline().
setStages(Array(labelIndexer, featureAssembler))
val myFeatureTransfer = convpipeline.fit(df)
显然它没有工作。我不确定我该怎么做才能让整个事情变得更加自动化,或者ML管道在这一刻不会占用那么多列(我怀疑)?
这仍然不适用于我。我认为我的输入数据框很好。我可以很容易地创建一个标记点,将其输入到MLlib中,但不能用于ML管道。请指教,谢谢! –