我正在用Java实现机器学习管道。作为其中的一部分,我有一个代表我的调整参数的类。最后,我必须遍历所有调整参数对并计算精度。例如,调整参数可以是从1到9的k-最近邻居的k。
首先,哪种数据结构最好存储调整参数?每个调整参数与可能值的列表相关联。参数的值大多是双倍(或整数),但不仅仅是。他们也可能是字符串。
其次,我想为这个对象创建一些迭代器。方法getNextPair()应返回下一组调整参数,直到hasNext()返回false。通过这种方式,我可以使用一个while循环迭代它(没有嵌套for循环)。
如何计算getNextPair()和hasNext()方法的所有调整参数对?当然,这在很大程度上取决于所使用的数据结构。
答案 0 :(得分:0)
我建议使用Multimaps。它类似于Map,您可以在其中为一个键设置多个值。
Guava实现Multimaps,你可以在一个循环中迭代它,如下图所示:
Multimap<String, Double> mm = ArrayListMultimap.create();
mm.put("alpha", 0.0);
mm.put("alpha", 0.7);
mm.put("alpha", 0.9);
for (double lambda = 0.0; lambda < 2.0; lambda += .25)
mm.put("lambda", lambda);
List<Double> A = (List<Double>)mm.get("alpha");
System.out.println(A);
System.out.println("Number of values for alpha: " + A.size());
for (Map.Entry<String, Double> e : mm.entries())
System.out.println(e);
System.out.println("Number of elements:" + mm.entries().size());
有一个很好的教程there。我希望它有所帮助。