Scala 在ML中工作时如何保存记录信息
我是根据一个问题提出这个问题的。OP说“这个问题在ML中不存在,因为它使用数据帧,我可以简单地将另一列的分数添加到我的原始数据帧中。”有人能告诉我怎么做吗? 我试过:Scala 在ML中工作时如何保存记录信息,scala,apache-spark,Scala,Apache Spark,我是根据一个问题提出这个问题的。OP说“这个问题在ML中不存在,因为它使用数据帧,我可以简单地将另一列的分数添加到我的原始数据帧中。”有人能告诉我怎么做吗? 我试过: val labeledData = data1.select("labels","hash-tfidf").rdd.map { row => LabeledPoint(row.getAs[Double]("labels"), row.getAs[org.apache.spark.ml.linalg.SparseVecto
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]...
我做错了什么?您不需要
RDD
,也不需要标签点
,并且无法从另一个数据帧添加列
不清楚什么是模型
,但我假设它的输入列是功能
,因此您可以重命名该列:
model.transform(data1.withColumnRenamed("hash-tfidf", "features"))
或者配置model
以接受hash tfidf
作为输入