如何在 java 中禁用 LibSVM weka 库的日志?

How to disable logs of LibSVM weka library in java?

我在 Weka 3.6 上使用 LibSVM 库并遇到与 here (for Java) and 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 日志?

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

在"LibSVM.jar"里面还有一个名为"libsvm.jar"的jar文件,这是主要的算法。与使用常见 Java 命名约定的 LibSVM 相反,"libsvm.jar" 中的命名约定是不同的。在 "libsvm" 包中有一个名为 "svm" 的 class。因为我使用 "svm" 作为我的变量名,所以 "svm" class 是不可见的。

知道后,我按照 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。