我将这个问题基于这个问题。OP说:"此问题在ML中不存在,因为它使用了数据框,我可以简单地将带有分数的另一列添加到我的原始数据框架中。"谁能告诉我该怎么做?我尝试了:
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]...
我在做什么错?
您不需要RDDs
,也不需要LabeledPoint
,也不能从另一个DataFrame
添加列。
尚不清楚model
是什么,但是我认为它的输入列是features
,因此您可以重命名列:
model.transform(data1.withColumnRenamed("hash-tfidf", "features"))
或配置model
接受hash-tfidf
作为输入。