WARN TaskSetManager: Lost Task xxx: java.lang.

我正在尝试使用 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


开满天机
浏览 566回答 1
1回答

BIG阳

那么解决这个问题的诀窍是使用multiclassclassificationevaluator 而不是Binaryclassificationevaluator.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java