C# 如何在C语言中将数据集加载到libsvm中#

C# 如何在C语言中将数据集加载到libsvm中#,c#,libsvm,C#,Libsvm,我已经从Libsvm下载了C#格式的SVM,但我不知道在哪里加载数据来执行分类,我想知道如何将数据集加载到SVM并运行它。我假设您正在使用 您必须找到加载数据的方法: 第一种方法-使用名为“TRAINING_file.txt”的文件数据集 注意:此方法假定文件格式正确。请看一些好的样品 var TRAINING_FILE = "C:\\[your_local_path]\\TRAINING_FILE.txt"; var data_set = ProblemHelper.ReadAndScale

我已经从Libsvm下载了C#格式的SVM,但我不知道在哪里加载数据来执行分类,我想知道如何将数据集加载到SVM并运行它。

我假设您正在使用

您必须找到加载数据的方法:


第一种方法-使用名为“TRAINING_file.txt”的文件数据集

注意:此方法假定文件格式正确。请看一些好的样品

var TRAINING_FILE = "C:\\[your_local_path]\\TRAINING_FILE.txt";
var data_set = ProblemHelper.ReadAndScaleProblem(TRAINING_FILE);
如果不想缩放,只需使用以下说明:

var data_set = ProblemHelper.ReadProblem(TRAINING_FILE);
然后,您最终必须创建SVM

var svm = new C_SVC(data_set, [most_appropriate_Kernel], c_parameter);

第二种方法-自己格式化数据集

注意:此方法使用Linq,请确保添加了System.Ling引用

您可以使用以下代码逐行构建数据集:

var vy = new List<double>();
var vx = new List<svm_node[]>();
foreach (var line_i in your_data_source)
{
   vy.Add(line_i.Y); // double value representing the class for the given experience

   List<svm_node> x = new List<svm_node>();
   for(int j = 0 ; j < NB_ATTRIBUTES ; j++) // Save values for each attributes
   {
      var attributeValue = line_i.X[j]; // value of the corresponding attribute
      x.Add( new svm_node() { index = j, value = attributeValue });
   }
   vx.Add(x.ToArray());
}
var data_set= new svm_problem();
data_set.l = vy.Count;
data_set.x = vx.ToArray();
data_set.y = vy.ToArray();
var svm = new C_SVC(data_set, [most_appropriate_Kernel], c_parameter);
var vy=new List();
var vx=新列表();
foreach(数据源中的var行)
{
vy.Add(第i.Y行);//表示给定体验的类的双值
列表x=新列表();
for(int j=0;j
谢谢您的建议,非常有帮助!