【问题标题】:How to disable logs of LibSVM weka library in java?如何在 java 中禁用 LibSVM weka 库的日志?
【发布时间】:2016-05-16 20:14:22
【问题描述】:

我在 Weka 3.6 上使用 LibSVM 库并遇到与here(用于 Java)和here(用于 Python)类似的问题

libSVM 库会生成很多与此类似的日志

optimization finished, #iter = 399
nu = 0.9503376170384973
obj = -124.54791151883072, rho = 0.0528133707297996
nSV = 257, nBSV = 97

我通过在我的代码中设置这个参数来遵循使用 -q 参数的解决方案:

LibSVM svm = new LibSVM();
String[] options = {"-q"};
svm.setOptions(options);

虽然这个解决方案似乎在 Python 中有效,但我在我的 Java 代码中无效。

另一个解决方案建议使用 Log4j 并禁用某些级别的日志,但是,我不想在我的代码中添加另一个库。

现在,我想知道是否有任何干净简单的解决方案来禁用 libSVM 日志?

【问题讨论】:

    标签: java weka libsvm


    【解决方案1】:

    具有“weka.classifiers.functions.LibSVM”的 FQN 的 Weka LibSVM 库是围绕 svm 算法的包装器,用于为使用 Weka API 的 Java 程序员创建一个通用接口。

    内部“libsvm.jar”有另一个jar文件名为“libsvm.jar”,它是主要算法。与Libsvm相反,使用常见的Java命名约定,“libsvm.jar”中的命名约定是不同的。在“libsvm”包中有一个名为“svm”的类。因为我用“SVM”作为我的变量名称,所以“SVM”类是不可见的。

    知道后,我遵循here的指令,并将“svm”更改为“libsvm.svm”,这是为我工作的代码。此外,我把这个代码放在我的代码的静态块中,以便为我的所有用法提供它。

    static{
        libsvm.svm.svm_set_print_string_function(new libsvm.svm_print_interface() {
            @Override
            public void print(String s) {
            } // Disables svm output
        });
    }
    

    最后,我正在使用libsvm而没有恼人的日志。

    【讨论】:

      猜你喜欢
      • 2015-01-16
      • 2014-12-26
      • 2011-07-10
      • 2017-10-12
      • 2014-08-13
      • 2012-06-17
      • 2014-07-03
      • 2015-06-16
      • 2016-04-19
      相关资源
      最近更新 更多