Java设计调优参数对象

时间:2016-03-09 12:02:19

标签: java machine-learning

我正在用Java实现机器学习管道。作为其中的一部分,我有一个代表我的调整参数的类。最后,我必须遍历所有调整参数对并计算精度。例如,调整参数可以是从1到9的k-最近邻居的k。

首先,哪种数据结构最好存储调整参数?每个调整参数与可能值的列表相关联。参数的值大多是双倍(或整数),但不仅仅是。他们也可能是字符串。

其次,我想为这个对象创建一些迭代器。方法getNextPair()应返回下一组调整参数,直到hasNext()返回false。通过这种方式,我可以使用一个while循环迭代它(没有嵌套for循环)。

如何计算getNextPair()和hasNext()方法的所有调整参数对?当然,这在很大程度上取决于所使用的数据结构。

1 个答案:

答案 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。我希望它有所帮助。