【问题标题】:how to load data set into libsvm in C#如何在 C# 中将数据集加载到 libsvm 中
【发布时间】:2012-09-27 09:57:12
【问题描述】:

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

【问题讨论】:

    标签: c# libsvm


    【解决方案1】:

    我假设您使用的是libsvm.net

    你必须有办法加载你的数据:


    第一种方式 - 使用文件数据集,名为“TRAINING_FILE.txt”

    注意:此方法假定您的文件格式正确。请参阅here 获取一些好的示例。

    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);
    

    【讨论】:

    • 感谢您的建议,真的很有帮助!
    猜你喜欢
    • 2014-07-15
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多