Как преобразовать разреженный вектор в плотный вектор в искровом конвейере? - PullRequest
0 голосов
/ 02 декабря 2019

Теперь есть конвейер, который включает IDF, CountVectorizer, ChiSqSelector, DecisionTreeClassifier. Я преобразовал этот конвейер, ошибка:

Feature 0 is marked as Nominal (categorical), but it does not have the number of values specified.

Я подумал, что конвейер создал разреженный вектор и поместил этот вектор в DecisionTreeClassifier, поэтому мне нужно преобразовать разреженный вектор в плотный вектор через этот конвейер, а затем подогнатьв DecisionTreeClassifier, как? Я отправил свой код:

val idf = new IDF()
              .setInputCol("rawFeatures")
              .setOutputCol("idfFeatures")

val cvm = new CountVectorizer()
              .setVocabSize(100)
              .setInputCol("ngrams")
              .setOutputCol("rawFeatures")
val selector = new ChiSqSelector()
              .setNumTopFeatures(50)
              .setFeaturesCol("idfFeatures")
              .setOutputCol("features")

val dt = new DecisionTreeClassifier()
val pipeline = new Pipeline()
val pipeline4 = Array[PipelineStage](cvm, idf, selector, dt)
val paramGrid4 = new ParamGridBuilder()
              .addGrid(dt.maxDepth, Array(10))
              .baseOn(pipeline.stages -> pipeline4)
              .build()

val paramGrid = paramGrid4

val cv = new CrossValidator()
              .setEstimator(pipeline)
              .setEvaluator(new BinaryClassificationEvaluator)
              .setEstimatorParamMaps(paramGrid)
              .setNumFolds(3)
              .setParallelism(1)
val cvModel = cv.fit(train)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...