spark scala Машинное обучение Не удалось найти значение по умолчанию для порогов - PullRequest
0 голосов
/ 04 января 2019

Когда я выполняю свой код локально, с тем же набором данных, хранящимся в локальной файловой системе, он запускается без проблем. но когда я запускаю его на своем кластере hadoop, он никогда не заканчивается и выдает мне эту ошибку бесконечно:

    ERROR AsyncEventQueue: Listener EventLoggingListener threw an exception
com.fasterxml.jackson.databind.JsonMappingException: Failed to find a default value for thresholds (through reference chain: org.apache.spark.ml.CreateModelEvent["model"]->org.apache.spark.ml.PipelineModel["stages"]->org.apache.spark.ml.classification.RandomForestClassificationModel["thresholds"]) 

Я не могу найти решение. Заранее благодарю за помощь. Вот часть моего кода:

      // Random Forest
      val randomForest = new RandomForestClassifier()
          .setLabelCol(idxdLabelColName)
          .setFeaturesCol(featuresColName)

      // Pipeline
      val pipeline = new Pipeline().setStages(
        (stringIndexers :+ labelIndexer :+ assembler :+ randomForest :+ labelConverter).toArray)

      // Cross validation parameters
      val paramGrid = new ParamGridBuilder()
        .addGrid(randomForest.maxBins, Array(25,28,31))
        .addGrid(randomForest.maxDepth, Array(4,6,8))
        .addGrid(randomForest.impurity, Array("entropy","gini"))
        .build()

      // evaluator
      val evaluator = new BinaryClassificationEvaluator()
        .setLabelCol(idxdLabelColName)

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

      // Train model on train set
      val crossValidatorModel = cv.fit(allTrainingData)

      // Prediction on test set
      val predictions = crossValidatorModel.transform(allTestData)
      predictions.show()
...