我对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的参数。 所以,如果有人有一个如何指定正确参数的例子,那将非常有帮助。
答案 0 :(得分:0)
我建议您使用https://github.com/ccerhan/LibSVMsharp libsvm的API与c#.NET。它还有一些例子可以帮助你理解SVM。