Я пытаюсь использовать DecisionTreeClassifier.train (), но появляется сообщение об ошибке:
Ошибка: (218, 41) последовательность методов в классе DecisionTreeClassifier недоступна в org.apache.spark.* Он сообщает, что мой объект FeatureSelection не является подклассом классификации пакетов, поэтому он не может вызвать предполагаемый метод пакета. Но фактически train () - это функция с открытым типом в официальных документах. Окружение: Scala 2.10.6 Spark 2.10: 1.6.1 jdk 1.8 Вот коды: import org.apache.spark.ml.classification.DecisionTreeClassifier object FeatureSelection { def selectFeatureGreedyDTNoLimit(){ val selectfeature=ArrayBuffer[String]() val selectsize=selectfeature.size val tempfeature=selectfeature++ArrayBuffer(line) val vectorDF = new VectorAssembler() .setInputCols(tempfeature.toArray) .setOutputCol("features") .transform(tempdf) .select("label", "features") val Array(trainRdd, testRdd) = vectorDF .rdd .map(row => LabeledPoint(Common.any2Double(row.get(0)).get, row.getAs[Vector](1))) .randomSplit(Array(0.5, 0.5), 0L) val numClasses = 2 val categoricalFeaturesInfo = Map[Int, Int]() val dt = decisionTreeClassifier.train(trainRdd, categoricalFeaturesInfo, numClasses) } } Надеемся, что кто-нибудь поможет мне решить эту проблему.
Ошибка: (218, 41) последовательность методов в классе DecisionTreeClassifier недоступна в org.apache.spark.*
Он сообщает, что мой объект FeatureSelection не является подклассом классификации пакетов, поэтому он не может вызвать предполагаемый метод пакета. Но фактически train () - это функция с открытым типом в официальных документах.
FeatureSelection
Окружение: Scala 2.10.6 Spark 2.10: 1.6.1 jdk 1.8
Вот коды:
import org.apache.spark.ml.classification.DecisionTreeClassifier object FeatureSelection { def selectFeatureGreedyDTNoLimit(){ val selectfeature=ArrayBuffer[String]() val selectsize=selectfeature.size val tempfeature=selectfeature++ArrayBuffer(line) val vectorDF = new VectorAssembler() .setInputCols(tempfeature.toArray) .setOutputCol("features") .transform(tempdf) .select("label", "features") val Array(trainRdd, testRdd) = vectorDF .rdd .map(row => LabeledPoint(Common.any2Double(row.get(0)).get, row.getAs[Vector](1))) .randomSplit(Array(0.5, 0.5), 0L) val numClasses = 2 val categoricalFeaturesInfo = Map[Int, Int]() val dt = decisionTreeClassifier.train(trainRdd, categoricalFeaturesInfo, numClasses) } }
Надеемся, что кто-нибудь поможет мне решить эту проблему.
Вы должны использовать метод fit.
fit
train - это внутренняя функция, поэтому она защищена.
train