machine-learning - 使用 LIBSVM 的多类

标签 machine-learning computer-vision classification svm libsvm

我有一个多类 svm 分类(6 类)。我想使用 LIBSVM 对它进行分类。以下是我尝试过的方法,我对它们有一些疑问。

方法一(一对一):

model = svmtrain(TrainLabel, TrainVec, '-c 1 -g 0.00154 -b 0.9');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);

关于此方法的两个问题:1)对于多类问题我需要做的就是 2) '-b n' 中的 n 应该是什么值。我不确定

方法二(1 vs 其余):

u=unique(TrainLabel); 
N=length(u); 
if(N>2)    
    itr=1;    
    classes=0;   
    while((classes~=1)&&(itr<=length(u)))   
        c1=(TrainLabel==u(itr));    
        newClass=double(c1); 
        tst = double((TestLabel == itr));
        model = svmtrain(newClass, TrainVec, '-c 1 -g 0.00154');  
        [predict_label, accuracy, dec_values] = svmpredict(tst, TestVec, model);    
        itr=itr+1;   
    end
    itr=itr-1;
end

对于第二种方法,如何附加分类分数。我无法投票。

除此之外,这是我尝试过的两种方法。哪种方法更好?

想听听一些意见。如果我错了,请纠正我。

最佳答案

关于“-b”参数,在 LIBSVM README 中写道:

-bprobability_estimates:是否训练SVC或SVR模型进行概率估计,0或1(默认0)

因此,如果您希望训练后的模型返回类别概率,则应指定“-b 1”,否则应指定“-b 0”。您只需调用 svmtrain 一次。此外,如果您为训练指定“-b 1”,则还必须为预测指定它。

关于machine-learning - 使用 LIBSVM 的多类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979531/

相关文章:

machine-learning - ValueError : Input 0 is incompatible with layer lstm_1: expected ndim=3, 发现 ndim=2 [keras]

python - 目标变量的字符串和数字的混合

matlab - 如何在Matlab中获取MSER的层次组件树?

c++ - 尝试翻译混合模式的公式

python - 二元分类问题中每个概率截止的准确性(python sklearn 准确性)

instance - 实例的闭包公理,以便推理器可以正确地对本体中的实例进行分类

c# - Accord.NET AdaBoost Decide 方法在哪里?

machine-learning - 基于概念的文本摘要(摘要)

android - Mobile Vision API 的面部跟踪(而不是检测)可以独立于其 CameraSource 使用吗?

classification - l1/l2 正则化导致 Vowpal wabbit 中所有特征权重为零是否合理?