我是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();
我在做什麼錯?
還有其他更好的辦法嗎多級分類除此之外呢?