【问题标题】:What does this exception mean when running LibSVM using Weka?使用 Weka 运行 LibSVM 时,此异常意味着什么?
【发布时间】:2015-03-15 02:57:55
【问题描述】:

我正在编写此代码以使用 Weka 使用 LibSVM 进行 5 折交叉验证。

    LibSVM svm = new LibSVM();
    svm.setKernelType(new SelectedTag(2, LibSVM.TAGS_KERNELTYPE));
    svm.setDegree(2);
    //Run a cross validation to select the right parameters
    CVParameterSelection ps = new CVParameterSelection();
    ps.setClassifier(svm);
    ps.setNumFolds(5);  // using 5-fold CV
    ps.addCVParameter("G 1 10 .1");

    // build and output best options
    //I get exception below ->>>>>>>>>>>>>>
    ps.buildClassifier(isTrainingSet);
    System.out.println(Utils.joinOptions(ps.getBestClassifierOptions()));

但是它抛出一个异常说

Exception in thread "main" java.lang.Exception: Error: gamma < 0
at weka.classifiers.functions.LibSVM.buildClassifier(LibSVM.java:1690)
at weka.classifiers.meta.CVParameterSelection.findParamsByCrossValidation(CVParameterSelection.java:377)
at weka.classifiers.meta.CVParameterSelection.findParamsByCrossValidation(CVParameterSelection.java:354)
at weka.classifiers.meta.CVParameterSelection.buildClassifier(CVParameterSelection.java:628)
at ExtractTopics.main(ExtractTopics.java:164)

我认为参数 gamme 永远不会小于零,对吧?初始值为 1,最终值为 10,分 10 步。那么,为什么会出现这个异常呢?

【问题讨论】:

  • 在下面回答了我自己的问题。

标签: java machine-learning weka svm


【解决方案1】:

在下面回答我自己的问题。

三个值中的最后一个参数不是要采取的步长大小。它是要执行的步骤数。所以上面说我要执行 0.1 步是不正确的。它应该是 100 步,以便 Weka 可以推断它需要在内部采用 0.1 步长。

使用 [1 10 100] 有所帮助,并且运行良好。

我找到的答案在这里——http://weka.8497.n7.nabble.com/Problem-evaluating-classifier-C-lt-0-error-td31971.html

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多