我已经从 Libsvm 下载了 C# 中的 SVM,但是我不知道在哪里加载我的数据来执行分类,我想知道如何将数据集加载到 SVM 中并运行它。
问问题
3062 次
1 回答
2
我假设您正在使用libsvm.net
你必须有办法加载你的数据:
第一种方法 - 使用文件数据集,称为“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);
于 2013-04-15T11:55:42.770 回答