在ML工作时如何保存记录信息

时间:2017-12-04 17:22:20

标签: scala apache-spark

我的问题基于this一个问题。 OP说“这个问题在ML中不存在,因为它使用DataFrame,我可以简单地将另一列与得分添加到我的原始数据帧中。”#39;谁能告诉我怎么做? 我试过了:

val labeledData = data1.select("labels","hash-tfidf").rdd.map { row =>
  LabeledPoint(row.getAs[Double]("labels"), row.getAs[org.apache.spark.ml.linalg.SparseVector]("hash-tfidf"))
}

val scoreDF = model.transform(labeledData.toDS)

val dfPredictions = data1.withColumn("prediction", scoreDF.col("prediction"))

其中data1是我的原始数据框,包含许多列。 这个错误包含:

org.apache.spark.sql.AnalysisException: resolved attribute(s) prediction#1458 missing from ....[loads of fields I think from data1]...

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您不需要RDDs,也不需要LabeledPoint,也无法从其他DataFrame添加列。

目前尚不清楚model是什么,但我认为它的输入列是features,因此您可以重命名该列:

model.transform(data1.withColumnRenamed("hash-tfidf", "features"))

或将model配置为接受hash-tfidf作为输入。