【发布时间】:2015-01-10 04:29:24
【问题描述】:
我正在尝试为 LIBSVM 实现我自己的交叉验证功能,但是我对如何根据我的输入数据处理提供给我的数据结构感到困惑。
数据存储在一个结构svm_problem中:
public class svm_problem implements java.io.Serializable
{
public int l;
public double[] y;
public svm_node[][] x;
}
在哪里: l 是数据集的长度; y 是包含其目标值的数组; x 是一个指针数组,每个指针都指向一个训练向量的表示。
svm_node定义为:
public class svm_node implements java.io.Serializable
{
public int index;
public double value;
}
我的目标是将训练数据分成 5 份,其中 4 份用于训练(函数 svm_train),其余的用于测试结果(svm_predict),以找出 C 的哪个值具有最佳预测结果(基于错误函数)。
我的问题是如何根据数据的结构将数据分成 5 折。如何将数据结构正确划分为 5 折,以便我继续进行 C 的优化。
我一直以此为指导: A Practical Guide to Support Vector Classification
如果有人能提供一个例子或一个例子的链接,说明如何最好地做到这一点,我们将不胜感激。谢谢。
【问题讨论】:
标签: java data-structures svm libsvm cross-validation