【发布时间】:2016-11-24 17:47:01
【问题描述】:
我正在尝试运行 spark 逻辑回归函数(ml 不是 mllib)。我有一个看起来像的数据框(仅显示第一行)
+-----+--------+
|label|features|
+-----+--------+
| 0.0| [60.0]|
(现在只是试图保持简单,特征中只有一个维度,但稍后会扩展。)
我运行以下代码 - 取自 Spark 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 repo 中的 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是特征的数量吗?如果是这样,似乎相当愚蠢 - spark应该能够查看特征向量的长度以查看有多少特征。如果我确实需要添加功能数量,我该怎么做? (Scala/Java 的新手)
干杯
【问题讨论】:
-
您是否在任何地方使用 VectorAssembler?此类异常仅由此 calss 引发,我没有从 LogisticRegression 中看到对它的任何引用
标签: scala apache-spark machine-learning