#scala #apache-spark #machine-learning #time-series #decision-tree
#scala #apache-spark #машинное обучение #временные ряды #дерево решений
Вопрос:
Я пытаюсь использовать DecisionTreeClassifier.train(), но он выдает такой отчет об ошибке:
Ошибка: (218, 41) невозможно получить доступ к методу train в классе DecisionTreeClassifier в org.apache.spark.ml.classification.Доступ DecisionTreeClassifier к защищенному методу train не разрешен, поскольку включение объекта FeatureSelection в ядро пакета не является подклассом класса DecisionTreeClassifier в классификации пакетов, где определена цель val dt = DecisionTreeClassifier.train(trainRdd)
Он сообщает, что мой объект 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)
}
}
Надеюсь, что кто-нибудь поможет мне решить эту проблему.
Ответ №1:
Предполагается, что вы используете метод fit
.
train
это внутренняя функция, поэтому она защищена.