如何在LibSVM C#Wrapper中指定训练参数

时间:2015-03-11 13:06:15

标签: c#-4.0 svm libsvm

我对SVM世界完全陌生。我正在使用LibSvmWrapper从this link

获取c#

但我无法弄清楚如何使用它以及如何指定正确的参数,特别是当我尝试使用Doxygen运行它时文档似乎已损坏

这是我的尝试:

        libSVM_Problem prob = new libSVM_Problem();
        libSVM classifier = new libSVM();
        libSVM_Parameter parameters = new libSVM_Parameter();
        parameters.svm_type = libSVMWrapper.SVM_TYPE.C_SVC;
        parameters.kernel_type = KERNEL_TYPE.LINEAR;
        parameters.C = 1;

        double[] labels = new double[trainClasses.Rows];
        //prepare classes labels
        for (int i = 0; i < trainClasses.Rows; i++)
        {
            labels[i] = trainClasses[i, 0];//trainClasses is an array of floats
        }

        //prepare samples 
        double[][] samples = new double[trainData.Rows][];

        for (int i = 0; i < samples.Length; i++)
        {
            samples[i] = new double[trainData.Cols];
            for (int j = 0; j < samples[i].Length; j++)
            {
                //trainData is 980 training sample * 400 features 
                samples[i][j] = trainData[i, j];
            }
        }
        //prepare data and attach it to prob object
        prob.labels = labels;
        prob.samples = samples;
        parameters.nu = 0;
        classifier.Train(prob, parameters);

此代码在调用Train方法时抛出异常,该方法声明libSVM_Parameter中的weight参数为空引用。我不知道如何指定这些权重以及libSVM_Parameter的参数。 所以,如果有人有一个如何指定正确参数的例子,那将非常有帮助。

1 个答案:

答案 0 :(得分:0)

我建议您使用https://github.com/ccerhan/LibSVMsharp libsvm的API与c#.NET。它还有一些例子可以帮助你理解SVM。