我正在嘗試使用 GridCV 在 scala 中進行超參數調整。但是我創建了我的管道和所有內容,我將我的數據集安裝到管道中,它非常適合。然后我添加了一些,然后paramGrid在 4 個階段后進行交叉驗證,它給了我錯誤:scala> val cvModel = cv.fit(df)Tracker started, with env={DMLC_NUM_SERVER=0, DMLC_TRACKER_URI=10.xx.xx.xxx, DMLC_TRACKER_PORT=9091, DMLC_NUM_WORKER=1}Tracker started, with env={DMLC_NUM_SERVER=0, DMLC_TRACKER_URI=10.xx.xx.xxx, DMLC_TRACKER_PORT=9091, DMLC_NUM_WORKER=1}Tracker started, with env={DMLC_NUM_SERVER=0, DMLC_TRACKER_URI=10.xx.xx.xxx, DMLC_TRACKER_PORT=9091, DMLC_NUM_WORKER=1}Tracker started, with env={DMLC_NUM_SERVER=0, DMLC_TRACKER_URI=10.xx.xx.xxx, DMLC_TRACKER_PORT=9091, DMLC_NUM_WORKER=1}19/02/13 09:16:33 WARN TaskSetManager: Lost task 2.0 in stage 152.0 (TID 916, ip-10.xx.xx.xxx.ec2.internal, executor 7): java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.spark.ml.linalg.DenseVector.apply(Vectors.scala:448) at org.apache.spark.ml.evaluation.BinaryClassificationEvaluator$$anonfun$1.apply(BinaryClassificationEvaluator.scala:82) at org.apache.spark.ml.evaluation.BinaryClassificationEvaluator$$anonfun$1.apply(BinaryClassificationEvaluator.scala:81) at scala.collection.Iterator$$anon$11.next(Iterator.scala:409) at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter..然后實際上有兩三段錯誤。我無法弄清楚為什么會發生這種情況,因為我是第一次在 scala 中編碼。但是根據我的概念和示例中給出的代碼,它似乎沒有鍛煉。或者有沒有其他方法可以對交叉驗證進行超參數調優和測試?我在setEvaluator執行代碼時遇到了這個問題。我的理解是我的特征形狀和 y 預測形狀不匹配。但是我如何確保他們這樣做呢?PS 我在 EMR 集群上運行它。我也嘗試了同樣的事情,只是將算法更改為邏輯回歸,它工作得很好。我正在使用 xgboost v0.8 而 spark 是 v2.2
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
那么解決這個問題的訣竅是使用multiclassclassification
evaluator 而不是Binaryclassificationevaluator
.
添加回答
舉報
0/150
提交
取消