我试图实现我自己的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.
当我尝试将我训练好的SVM保存到文件中时,我得到以下错误:
Caused by: java.lang.Exception: unknown exception
at org.opencv.core.Algorithm.save_0(Native Method)
at org.opencv.core.Algorithm.save(Algorithm.java:53)
at signdetectiontool.training.Trainer.createTrainingFile(Trainer.java:275)
at signdetectiontool.controller.MainContr
我已经下载了用于在Java中运行svm的JNI_svm-light-6.01-64位版本。我尝试了在线搜索,但没有准确地弄清楚使用eclipse IDE for java运行库的步骤。我想要做的就是知道如何提供一个输入训练文件来训练模型,并给出一个测试文件以便我得到相应的结果?使用eclipse IDE进行此操作的分步说明将非常有用。
嗨,我现在正在做一个项目,并且已经开始为我的java应用程序使用LIBSVM ()库来训练每个图像的多维图像数据集。
我有一个关于svm_problem和svm_node的问题
在svm_problem中,我们有以下代码
package libsvm;
public class svm_problem implements java.io.Serializable
{
public int l;
public double[] y;
public svm_node[][] x;
}
我说得对吗?
我代表所有图像的大小?
Y是图像的标签,在我的例子中我想要+1/-1
我有一个大小为100个.Total的特征向量,训练样本为500个,其中每个类有10个样本。我想为每个class.That设计一个单独的svm分类器,每个类的分类器将被馈送10个正(对于该类)和490个负实例。我的opencv代码如下
对于培训:
Mat trainingDataMat(500, 100, CV_32FC1, trainingData);//trainingData is 2D MATRIX
Mat labelsMat(500, 1, CV_32FC1, labels);//10 positive and 490 -ve labels
CvSVMParams params;
p
在我的支持向量机预测模型的实现中,我想让函数svmutil.svm_train的执行多线程。虽然我是多线程程序实现的新手,但我对并行编程概念有一定的了解,我相信同时训练具有不同参数集的多个模型在理论上是可能的。
设置:
import svmutil
import multiprocessing as mp
problem = svm_util.svm_read_problem('my_problem')
# I have a list of svm_param objects I want to train
params = myCode.svm_param_list()