我的问题基于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]...
我做错了什么?
答案 0 :(得分:1)
您不需要RDDs
,也不需要LabeledPoint
,也无法从其他DataFrame
添加列。
目前尚不清楚model
是什么,但我认为它的输入列是features
,因此您可以重命名该列:
model.transform(data1.withColumnRenamed("hash-tfidf", "features"))
或将model
配置为接受hash-tfidf
作为输入。