Java Spark ML-Java.lang.IollegalArgumentException:标签不存在.可用:



关于我收到的Spark异常的小问题。

我有一个非常简单的数据集:

myCoolDataset.show();
+----------+-----+
|      time|value|
+----------+-----+
|1621900800|   43|
|1619568000|   41|
|1620432000|   41|
|1623974400|   42|
|1620604800|   41|
[truncated]
|1621296000|   42|
|1620691200|   44|
|1620345600|   41|
|1625702400|   44|
+----------+-----+
only showing top 20 rows

我想对它执行线性回归,以便预测未来时间的下一个

因此,我写了以下内容,这就是我尝试的:

VectorAssembler       vectorAssembler = new VectorAssembler().setInputCols(new String[]{"time", "value"}).setOutputCol("features");
Dataset<Row>          vectorData      = vectorAssembler.transform(myCoolDataset);
LinearRegression      lr              = new LinearRegression(); 
LinearRegressionModel lrModel         = lr.fit(vectorData); // issue here

不幸的是,在运行时,我得到了这个异常:

Exception in thread "main" java.lang.IllegalArgumentException: label does not exist. Available: time, value, features
at org.apache.spark.sql.types.StructType.$anonfun$apply$1(StructType.scala:278)
at scala.collection.immutable.Map$Map3.getOrElse(Map.scala:181)
at org.apache.spark.sql.types.StructType.apply(StructType.scala:277)
at org.apache.spark.ml.util.SchemaUtils$.checkNumericType(SchemaUtils.scala:75)
at org.apache.spark.ml.PredictorParams.validateAndTransformSchema(Predictor.scala:54)
at org.apache.spark.ml.PredictorParams.validateAndTransformSchema$(Predictor.scala:47)
at org.apache.spark.ml.regression.LinearRegression.org$apache$spark$ml$regression$LinearRegressionParams$$super$validateAndTransformSchema(LinearRegression.scala:185)

我可以问一下根本原因是什么,以及如何解决这个问题吗?

谢谢

Mlib回归需要传递包含标签的列的名称(您想要预测的(。默认情况下,回归将考虑名为"label"的列。在您的特定示例中,您没有这样的列。

我看到了这些解决方案:

  • 您可以在LinearRegression实例上调用setLabelCol("value"(
  • 还可以修改数据集,并将列"value"重命名为"label"(方法为ColumnRenamed(
  • 可以将列"value"复制到名为"label"的新列中(方法withColumn(

相关内容

  • 没有找到相关文章