2016-06-20 6 views
0

MAP(Mean Average Precision)を実装しようとしていますが、今までのすべてが機能しますが、RDDで計算する必要がある段階に達しました。同様Iterationsを使用しないSpark RDDの計算

JavaPairRDD<Tuple2<Double, Double>, Long> actualAndPredictedSorted = actual.join(predictions).mapToPair(
       new PairFunction<Tuple2<Tuple2<Integer,Integer>,Tuple2<Double,Double>>, Double, Double>() { 
        public Tuple2<Double,Double> call(Tuple2<Tuple2<Integer,Integer>,Tuple2<Double,Double>> t) { 
         return new Tuple2 < Double, Double > (t._2._2, t._2._1); 
        } 
     }).sortByKey(false).zipWithIndex(); 

:その上それは私が計算をしたいと思っ

ここで(実際、インデックスと一緒に評価を予測)、最終的に生成RDDです(反復を使用せずに、rdd.collect()はオプションではありません)以下では、計算の仕方を説明するイメージを見つけることができます。 RDDにおけるユーザの実際の評価は3/5

enter image description here

を超える場合 例えばエントリは私が自分自身を説明願っています(緑がヒットとみなす)を算出してしまいます!

答えて

0

フィルタリングは必要ですが、反復処理は必要ありません。

それは

  1. フィルタリング(条件を満たしているだけで評価を維持する)ことによって達成することができます。
  2. すべてを追加する
  3. エントリ数で除算します。
+0

は、 –

+0

はい。マップはファンクタの一種で、RDDにいくつかの関数を適用し、新しい値に変換します。減量は一般的に計算します。 –

+0

まだ追加できません。もっと詳しく教えてください。コードの一部を表示するかもしれませんか?ありがとう。 –

関連する問題