【发布时间】:2018-11-09 17:59:05
【问题描述】:
我在使用一个热编码器时遇到了 scala spark 中的 ml.crossvalidator 问题。
这是我的代码
val tokenizer = new Tokenizer().
setInputCol("subjects").
setOutputCol("subject")
//CountVectorizer / TF
val countVectorizer = new CountVectorizer().
setInputCol("subject").
setOutputCol("features")
// convert string into numerical values
val labelIndexer = new StringIndexer().
setInputCol("labelss").
setOutputCol("labelsss")
// convert numerical to one hot encoder
val labelEncoder = new OneHotEncoder().
setInputCol("labelsss").
setOutputCol("label")
val logisticRegression = new LogisticRegression()
val pipeline = new Pipeline().setStages(Array(tokenizer,countVectorizer,labelIndexer,labelEncoder,logisticRegression))
然后给我这样的错误
cv: org.apache.spark.ml.tuning.CrossValidator = cv_8cc1ae985e39
java.lang.IllegalArgumentException: requirement failed: Column label must be of type NumericType but was actually of type org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7.
我不知道如何解决它。
我需要一个热编码器,因为我的标签是分类的。
谢谢你帮助我:)
【问题讨论】:
标签: scala apache-spark apache-spark-mllib apache-spark-ml