2

現在、2 つの DataSet に参加しようとしています (flink 0.10-SNAPSHOT API の一部)。どちらの DataSet も同じ形式です。

predictions:
6.932018685453303E155 DenseVector(0.0, 1.4, 1437.0)

org:
2.0 DenseVector(0.0, 1.4, 1437.0)

general form:
LabeledVector(Double, DenseVector(Double,Double,Double))

私が作成したいのは、2 つの DataSet のラベルのみを含む新しい DataSet[(Double,Double)] です。

join:
6.932018685453303E155 2.0

したがって、次のコマンドを試しました。

val join = org.join(predictions).where(0).equalTo(0){
  (l, r) => (l.label, r.label)
}

しかし、結果として「結合」は空です。何か不足していますか?

4

1 に答える 1

3

LabeledVector タイプのラベル フィールド (インデックス 0) に参加しています。つまり、一致するラベルを持つ要素のすべてのペアを構築しています。あなたの例は、代わりにベクトル場に参加したいことを示しています。

ただし、たとえば次のように呼び出して、ベクトル フィールドに結合します。

org.join(predictions).where("vector").equalTo("vector"){
  (l, r) => (l.label, r.label)
}

DenseVectorベクトル フィールドのタイプである は、Flink によってキー タイプとして認識されないため (すべての種類の配列など)、機能しません。

以下のコメントで、予測値とラベル値を比較する方法について説明します。

于 2015-08-13T12:06:35.250 に答える