如果有人熟悉libSVM(https://www.csie.ntu.edu.tw/~cjlin/libsvm/),我相信在C#包装器中使用libSVMsharp也是一样的。
在他们的github上,他们使用SVM给出了如何编写简单分类的以下示例:
SVMProblem problem = SVMProblemHelper.Load(@"dataset_path.txt");
SVMProblem testProblem = SVMProblemHelper.Load(@"test_dataset_path.txt");
SVMParameter parameter = new SVMParameter();
parameter.Type = SVMType.C_SVC;
parameter.Kernel = SVMKernelType.RBF;
parameter.C = 1;
parameter.Gamma = 1;
SVMModel model = SVM.Train(problem, parameter);
double target[] = new double[testProblem.Length];
for (int i = 0; i < testProblem.Length; i++)
target[i] = SVM.Predict(model, testProblem.X[i]);
double accuracy = SVMHelper.EvaluateClassificationProblem(testProblem, target);
这一切都很有意义,在训练数据中加载指定的路径,并与测试数据相同......那就是我遇到问题的地方。
我想在C#中测试一下这只是为了确保我完全理解它是如何工作的,然后再在我正在研究的大型项目中实现它。我有一个名为Program.cs的小程序(非常原创,我知道),在相同的文件夹中,我有train.txt和test.txt。因此,我们有一个包含Program.cs,train.txt和test.txt的文件夹,以及在Visual Studio中创建项目时创建的一些其他标准内容。
所以我的代码片段看起来像这样:
SVMProblem trainingSet = SVMProblemHelper.Load(@"train.txt");
SVMProblem testSet = SVMProblemHelper.Load(@"test.txt");
trainingSet = trainingSet.Normalize(SVMNormType.L2);
testSet = testSet.Normalize(SVMNormType.L2);
等等。但是,当我运行它时,它基本上表示变量&#34; trainingSet&#34;为null,因为SVMProblemHelper实际上从未设法加载train.txt。
我觉得有一个非常明显的解决方案,但我完全迷失了。我不完全确定这里出了什么问题。在SVMProblemHelper.Load函数中,它基本上表示如果找不到相关文件,它将设置变量(在本例中为trainingSet)等于null。但是怎么没找到文件呢?它与.cs文件位于同一目录中。我不确定我错过了什么,但我无法弄清楚。
欢迎任何帮助!