我正在使用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管道。請指教,謝謝! –