型号不支持LIBSVM probabiliy估计(Model does not support pr

2019-10-19 09:03发布

我用LIBSVM在Matlab带有选项'-b 1'在训练和预测处理。 但它总是返回Model does not support probabiliy estimates ,所以我没有得到任何的概率或准确估计。 我试着在二进制类SVM(不NU-SVM!),它应该有工作'-b 1' ,但事实并非如此。 有谁知道什么是这个问题的原因是什么?

谢谢

Answer 1:

  1. 让我告诉你的使用SVM-预测

用法:SVM-预测[选项] test_file里面model_file OUTPUT_FILE选项:

-b probability_estimates:是否预测概率估计,0或1(默认为0); 一类支持向量机仅0支持

-q:安静模式(无输出)

  1. SVM-火车:

用法:SVM-火车[选项] training_set_file [model_file]选项:

 -s svm_type : set type of SVM (default 0) 

0 - C-SVC(多类分类)

1 - NU-SVC(多类分类)

2 - 一个类SVM

3 - 的ε-SVR(回归)4 - NU-SVR(回归)

-t kernel_type:设定类型的核函数的(默认2)
0 -线性:U 'V 1 -多项式:(γ-U' V + coef0)^度
2 -径向基函数:EXP(-gamma | UV | ^ 2)
3 - 乙状结肠:正切(伽马* U'* V + coef0)

4 - 预先计算内核(在training_set_file内核值)

-d度:设定程度的内核功能(默认值3)

-g伽马:在核函数设定伽马(默认为1 / NUM_FEATURES)

-r coef0:内核功能设置coef0(默认为0)

-c费用:设定C-SVC,ε-SVR,和NU-SVR的参数C(缺省为1)

-n NU:设置NU-SVC,一个类SVM和NU-SVR的参数NU(默认0.5)

-p小量:设置在小量-SVR的损失函数的ε(默认0.1)

-m的cachesize:以MB为单位设置高速缓存大小(默认为100)

-e小量:终止标准的设定容差(默认值0.001)

-h收缩:是否使用收缩启发式,0或1(缺省为1)

-b probability_estimates:是否训练一个SVC或SVR模型的概率估计,0或1(默认为0)

-Wi重量:设置类的参数C i到加权* C,对于C-SVC(缺省为1)

-vn:N倍交叉验证模式

-q:安静模式(无输出)

我们可以看到,最后的第四行是-b选项。 如果我们训练了与“-b 1”选项的模型,我们将得到一个可以输出概率,当你试图预测模型。 否则,如果你只有当你试图预测并不会产生与“-b 1”模型中使用“-b 1”选项。 你将得到错误:型号不支持probabiliy估计

最主要的是,如果你想获得probabiliy的估计,你应该在你的训练测试过程中使用“-b 1”,他们两个。



Answer 2:

其实你的问题需要更多的信息来获得正确的答案。 但通常是给错误的部分是在这里的源代码:

try 
        {
            BufferedReader input = new BufferedReader(new FileReader(argv[i]));
            DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(argv[i+2])));
            svm_model model = svm.svm_load_model(argv[i+1]);
            if(predict_probability == 1)
            {
                if(svm.svm_check_probability_model(model)==0)
                {
                    System.err.print("Model does not support probabiliy estimates\n");
                    System.exit(1);
                }
            }
            else
            {
                if(svm.svm_check_probability_model(model)!=0)
                {
                    System.out.print("Model supports probability estimates, but disabled in prediction.\n");
                }
            }
            predict(input,output,model,predict_probability);
            input.close();
            output.close();
        } 
        catch(FileNotFoundException e) 
        {
            exit_with_help();
        }
        catch(ArrayIndexOutOfBoundsException e) 
        {
            exit_with_help();
        }
    }

这意味着它没有找到概率模型。



文章来源: Model does not support probabiliy estimates in libsvm