2016-04-26 12 views
0

私は、入力としてSeq[Seq[(Double,Double)]]を使用して二乗平均平方根誤差を計算するための簡単な関数を作成する必要があるデータ配列を使用して二乗誤差平均平方根を計算するための簡単な関数を作成します。[配列[(ダブル、ダブル]]

これは、私の試み:

val getRMSE: (Seq[Seq[(Double, Double)]]) => Double = { 
    (predictions) => 
     val mse = predictions 
     .map { 
      case (rating, prediction) => 
      val err = rating-prediction 
      err*err 
     }.mean() 
     math.sqrt(mse) 
    } 

質問はerr*errrating-predictionでコンパイルエラーを解決する方法であることは言う「のシンボルを解決できません*」

+0

あなたの質問は何ですか? –

+0

@ Archetypal Paul:気づいてくれてありがとう。私は誤って質問自体を削除しました:)私の更新を見てください。 – Klue

+0

Hmm。それは私が得るエラーではありません。 'predictions'は' Seq [Seq [(Double、Double) 'です。したがって、マップの各要素は 'Seq [(Double、Double)]'であり、 '(Double、Double)'の大文字と小文字は一致しません。だから、コードのロジックは少し混乱しています... –

答えて

0

あなたpredictionsのタイプはactuallです。 y Seq[Seq[(Double, Double)]]。したがって、mapを呼び出すときは、タイプがSeq[(Double, Double)]のファンクションを指定する必要がありますが、ファンクションは(Double, Double)から渡します。

case (rating, prediction) 

が間違っている、私はこれが正しい方法であなたを得ることを願っています

case seqOfPairs: Seq[(Double, Double)] //actually ((Double, Double) is erased in compile time) 

に変更します。

+0

ありがとう、ありがとう。これは私があなたの答えに基づいて書いたものですが、私はまだ '平均'を加える方法を理解できません。 'val mse = output .map { case seqOfPairs:Seq [(Double、Double)] => val err = seqOfPairs.map(p => math.abs(p._1))これはコンパイラによって赤色でマークされています。 - p._2))。 err * err の合計。math.sqrt(mse) ' – Klue

+0

また、あなたの' mean'はどこに定義されていますか? – ka4eli

+0

'mean'を正しく追加するには? 'seqOfPairs.map {} 'の最後に追加しました。mean' – Klue