【问题标题】:Why the code is not producing the output as it is supposed to be in the logic implemented?为什么代码没有产生应该在实现的逻辑中的输出?
【发布时间】:2019-09-15 01:46:06
【问题描述】:

以下是值预测中的 My DataFrame 列(预测)

val PredictionModel = model.transform(testDF)
PredictionModel.select("features","label","prediction")

我创建了一个如下列表

val listOfPrediction = PredictionModel.select("prediction").collect.toList

当我执行 listOfPrediction.foreach(println) 时,列表的输出是:

[1.0] [1.0] [0.0] [0.0] [2.0] 以此类推

我试图实现的逻辑是

 val header: List[String] =  List("ID", "predict_0", "predict_1", "predict_2")

  var Id : List[String]= Idcol
  var Predict0  = List[String]()
  var Predict1  = List[String]()
  var Predict2  = List[String]()


 for(x<-listOfPrediction) 
 {
    if(x==0.0)
    {
      Predict0=1.toString() :: Predict0
      Predict1=0.toString():: Predict1
      Predcit2=0.toString():: Predict2
    }
    else if(listOfPrediction==1.0)
    {
      Predict1=1.toString():: Predcit1
      Predict0=0.toString() :: Predict0
      Predcit2= 0.toString():: Predict2

    }

    else if(listOfPrediction==2.0)
    {
      Predict2 =1.toString():: Predict2
      Predict0=0.toString() :: Predict0
      Precict1=0.toString():: Predict1
    }

    else
   {
      Predict2 =0.toString():: Predict2
      Predict0=0.toString() :: Predict0
      Precict1=0.toString():: Predict1
   }
 }

然后我使用列值将它们写入 CSV 文件 问题是每次执行条件的 else 部分时。为什么是 这是怎么回事?

【问题讨论】:

  • 如果您只是使用将它们添加为数据框列然后收集到列表中会容易得多,predictionModel.select($"I'd",when($"prediction"==0,1) . 否则 (0).alias("Predict1"),.....)

标签: scala apache-spark


【解决方案1】:

您的代码包含像 listOfPrediction==1.0 这样的行,这些行总是错误的,因为 listOfPrediction 是一个列表而不是一个数字。

您应该将其更改为 x.getDouble(0)==1.0 等(xRow

【讨论】:

  • 我变了,但还是一样。
  • @RanaZubair 好的,xRow,因此您需要以某种方式提取双精度值。您应该检查PredictionModel.select("prediction").printSchema 的架构以确定如何操作
【解决方案2】:

listOfPrediction 是 List(Row) 的类型。 [1.0] [1.0] [0.0] [0.0] [2.0] 这些是 Row 类型。行不过是列数组,所以使用索引来访问。 使用索引 if(x(0)==0.0)

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多