0

如果有人熟悉 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);

等等。但是,当我运行它时,它基本上说变量“trainingSet”为空,因为 SVMProblemHelper 从未真正设法加载 train.txt。

我觉得对此有一个明显的解决方案,但我完全迷失了。我不完全确定出了什么问题,在这里。在 SVMProblemHelper.Load 函数中,它基本上说如果找不到相关文件,它将设置变量(在本例中为 trainingSet)等于 null。但是怎么找不到文件呢?它与 .cs 文件位于同一目录中。我不确定我错过了什么,但我无法弄清楚。

欢迎任何帮助!

4

0 回答 0