隨着org.apache.spark.mllib學習算法,我們用來設置管道沒有訓練算法sc.parallelize不是在ML管道與訓練算法工作
var stages: Array[org.apache.spark.ml.PipelineStage] = index_transformers :+ assembler
val pipeline = new Pipeline().setStages(stages)
然後經過我們二手LabeledPoint獲取數據準備好訓練算法,最後我們用來訓練的東西模型像
val model = GradientBoostedTrees.train(sc.parallelize(trainingData.collect()), boostingStrategy)
我們必須注意到,如果我們逼債使用「sc.parallelize」噸他的訓練似乎永遠不會結束。
現在用org.apache.spark.ml學習算法(由於setLabelCol & setFeaturesCol),我們可以包括訓練算法也醞釀
val model = new GBTRegressor().setLabelCol(target_col_name).setFeaturesCol("features").setMaxIter(10)
var stages: Array[org.apache.spark.ml.PipelineStage] = index_transformers :+ assembler :+ model
val pipeline = new Pipeline().setStages(stages)
但現在當我們通過數據,它節選的數據幀,而不是數據行通過sc.parallelize 所以下面的代碼
val model = pipeline.fit(sc.parallelize(df_train))
引發以下錯誤完成:
<console>:57: error: type mismatch;
found : org.apache.spark.sql.DataFrame
required: Seq[?]
而這
val model = pipeline.fit(df_train)
永遠不會結束。
這個問題的解決方案是什麼?
使用數據框'toDF'將RDD轉換爲Dataframe並返回 - 您只需要添加一個模式(如標題)即可。 – GameOfThrows
@GameOfThrows:對不起,我沒有明白。 df_train已經是一個DataFrame。 – Abhishek