Spark 2.1.0,ML RandomForest:java.lang.UnsupportedOperationException:empty.maxBy

时间:2017-05-17 11:51:41

标签: apache-spark apache-spark-ml

我正在尝试在以下架构的DataFrame上安装ML Cross Validator:

root
 |-- userID: string (nullable = true)
 |-- features: vector (nullable = true)
 |-- label: double (nullable = true)

当我适合CrossValidator时,我得到java.lang.UnsupportedOperationException: empty.maxBy

我已经阅读了this错误报告,它说这个异常发生在没有feautres:

  

如果是空功能,我们会失败并显示更好的错误消息:   DecisionTree需要多少个功能> 0,但被赋予了空特征向量   而不是神秘的错误消息:   java.lang.UnsupportedOperationException:empty.max

在我的情况下,我确实有数以千计的功能,所以我确信功能DataFrame不是空的。

这种例外可能是另一个原因?

我正在EMR上运行群集,如果这有帮助(DataFrame名称为featuresDF,在我符合CrossValidator之前,我确认没有空功能):

val rf = new RandomForestClassifier()
                        .setLabelCol("label")
                        .setFeaturesCol("features")

val pipeline = new Pipeline().setStages(Array(rf))

val paramGrid = new ParamGridBuilder()
                    .addGrid(rf.numTrees, Array(500, 1000))
                    .addGrid(rf.maxDepth, Array(15, 25))
                    .build()

val evaluator = new BinaryClassificationEvaluator()
                    .setLabelCol("label")
                    .setMetricName("areaUnderPR")

val cv = new CrossValidator()
                    .setEstimator(pipeline)
                    .setEvaluator(evaluator)
                    .setEstimatorParamMaps(paramGrid)
                    .setNumFolds(3)

val model = cv.fit(featuresDF)

0 个答案:

没有答案