我想运行火花逻辑回归函数(ml不是mllib)。我有一个数据帧,它看起来像(只显示第一行)如何定义火花ml中的特征列
+-----+--------+
|label|features|
+-----+--------+
| 0.0| [60.0]|
(现在只是试图保持简单,在功能只有一个维度,但将在稍后展开。)
我运行下面的代码 - 从星火ML文档采取
import org.apache.spark.ml.classification.LogisticRegression
val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.3)
.setElasticNetParam(0.8)
val lrModel = lr.fit(df)
这给我的错误 -
org.apache.spark.SparkException: Values to assemble cannot be null.
我不知道如何解决这个错误。我查看了spark_github回购中的sample_libsvm_data.txt,并在Spark ml文档中的一些示例中使用了它。该数据帧看起来像
+-----+--------------------+
|label| features|
+-----+--------------------+
| 0.0|(692,[127,128,129...|
| 1.0|(692,[158,159,160...|
| 1.0|(692,[124,125,126...|
基于这个例子,我的数据看起来应该是在正确的格式,有一个问题。 692个功能是多少?看起来相当愚蠢 - 如果是这样的话 - 火花应该能够看看特征向量的长度,看看有多少功能。如果我确实需要添加功能的数量,我该怎么做? (漂亮的新斯卡拉/ JAVA)
干杯
你在任何地方使用VectorAssembler吗?这种异常仅仅是由这个问题引发的,我没有看到LogisticRegression对它的任何引用 –