1
私はそれぞれのポイントに最も近い辺を見つけたいと思っています。私はkarlhigley ANNモデルを使って試しました。ここにコードがありますKarlhigley LSH ANNヌルの結果を与える最近傍を見つけるモデル
List<Tuple2<Object, SparseVector>> svList = new ArrayList<>();
svList.add(new Tuple2<Object, SparseVector>(3L,
(Vectors.sparse(20, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
new double[] { 5.0f, 3.0f, 4.0f, 5.0f, 5.0f, 1.0f, 5.0f, 3.0f, 4.0f, 5.0f, 5.0f, 3.0f, 4.0f,
5.0f, 5.0f, 1.0f, 5.0f, 3.0f, 4.0f, 5.0f })
.toSparse())));
svList.add(new Tuple2<Object, SparseVector>(4L,
(Vectors.sparse(20, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
new double[] { 1.0f, 2.0f, 1.0f, 5.0f, 1.0f, 5.0f, 1.0f, 4.0f, 1.0f, 3.0, 1.0f, 2.0f, 1.0f,
5.0f, 1.0f, 5.0f, 1.0f, 4.0f, 1.0f, 3.0f })
.toSparse())));
svList.add(new Tuple2<Object, SparseVector>(6L,
(Vectors.sparse(20, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
new double[] { 5.0f, 3.0f, 4.0f, 1.0f, 5.0f, 4.0f, 1.0f, 3.0f, 4.0f, 5.0f, 5.0f, 3.0f, 4.0f,
1.0f, 5.0f, 4.0f, 1.0f, 3.0f, 4.0f, 5.0f })
.toSparse())));
RDD<Tuple2<Object, SparseVector>> points = sc.parallelize(svList).rdd();
ANNModel annModel =
new ANN(20, "cosine")
.setTables(1)
.setSignatureLength(20).setRandomSeed(3)
.train(points,StorageLevel.MEMORY_AND_DISK());
JavaRDD<Tuple2<Object, Tuple2<Object, Object>[]>> neighbors2 = annModel.neighbors(3).toJavaRDD();
JavaRDD neighbors2は、すべてのネイバーとそのスコアをnullにします。誰が間違った実装をしているのか、それを正しい方法で実行する方法を理解するのに助けてくれますか?
print文が間違っていた:
これは私が出力に
neighbors2.foreach(f->{
for(int i=0;i<f._2.length;i++){
System.out.println(f._1+"====="+f._2[i]._1+"---"+f._2[i]._2);
}
});