我是SVM的新手。我使用jlibsvm为多级分类问题。基本上,我正在做一个句子分类问题。有3类。我的理解是我在做一对一的分类。我有一个相对较小的火车。总共75个句子,其中25个句子属于每个类别。如何在多类分类中获得jlibsvm预测概率
我提出3个支持向量机(所以3个不同的型号),其中,在训练中,SVM_A,句子属于A类将有一个真正的标签,即和其他句子将有- 1标签。相应地为SVM_B和SVM_C完成。
在测试时,为了得到句子的真实标签,我给了3个模型的句子,并且我将这3个模型返回的预测概率。哪一个返回最高将是句子所属的班级。
这就是我所做的。但是对于所有模型的测试集中的每个句子,我都得到相同的预测概率。
A predicted:0.012820514
B predicted:0.012820514
C predicted:0.012820514
这些值对训练集中的所有句子重复。
下面是我如何设置训练参数:
C_SVC svm = new C_SVC();
MutableBinaryClassificationProblemImpl problem;
ImmutableSvmParameterGrid.Builder builder = ImmutableSvmParameterGrid.builder();
// create training parameters ------------
HashSet<Float> cSet;
HashSet<LinearKernel> kernelSet;
cSet = new HashSet<Float>();
cSet.add(1.0f);
kernelSet = new HashSet<LinearKernel>();
kernelSet.add(new LinearKernel());
// configure finetuning parameters
builder.eps = 0.001f; // epsilon
builder.Cset = cSet; // C values used
builder.kernelSet = kernelSet; //Kernel used
builder.probability=true; // To get the prediction probability
ImmutableSvmParameter params = builder.build();
我在做什么错?
还有其他更好的办法吗多级分类除此之外呢?