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



我将这个问题基于这个问题。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作为输入。

最新更新