如何使用LibSVM进行十折交叉验证?
我在哪里可以找到一个使用LibSVM(Java/Python)对数据集进行10折交叉验证的例子?
2 个回答
0
如果我没有理解错你的问题,libsvm
包里面的python
子目录下有一个svmutil.py
脚本,它提供了n折交叉验证的功能:
-v n: n-fold cross validation mode
而在java
子目录里的svm_train.java
文件中也有类似的选项:
+"-v n : n-fold cross validation mode\n"
你可以看看这两个文件,里面有一些示例代码。
5
在Java的情况下;
你可以使用libsvm提供的svm_cross_validation()方法。
double[] target = new double[svmProblem.l];
svm.svm_cross_validation(svmProblem, svmParameter, 10, target );
你应该已经创建了svm_problem和svm_parameter的实例(在示例中分别叫svmProblem和svmParameter)。这个函数的第三个参数是折叠的数量,target是一个数组,用来存放数据集中每个样本的预测标签值。所以,target数组的长度应该和你的输入数据长度一致。