您好,我目前正在开发一个项目,并已开始使用LIBSVM(http://www.csie.ntu.edu.tw/~cjlin/libsvm/)库为我的Java应用程序训练每个图像的多维图像数据集。
我对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;
}
我说得对吗
l表示所有图像的大小?
y是图像的标签,就像我的情况一样,我想要+ 1 / -1
现在引出关于svm_node [] [] x
的第二个问题package libsvm;
public class svm_node implements java.io.Serializable
{
public int index;
public double value;
}
每个svm_node从1到i,其中i是我的属性编号,存储在数组的每个位置。
所以例如我的图像值如下
1 1:1.5 2:2.5 3:4.5
-1 1:1 2:2 3:3
所以我的int l = 3
我的y将是
y [0] = 1
y [1] = -1
x [0] [0] .index = 1
x [0] [0] .value = 1.5
x [0] [1] .index = 2
x [0] [1] .value = 2.5
x [0] [2] .index = 3
x [0] [2] .value = 4.5
x [1] [0] .index = 1
x [1] [0] .value = 1
x [1] [1] .index = 2
x [1] [1] .value = 2
x [1] [2] .index = 3
x [1] [2] .value = 3
我的理解是对的吗?
答案 0 :(得分:2)
你很亲密。
svm_problem.l是数据库中的样本数,因此在这种情况下它将是2。
由于libsvm使用稀疏表示法,因此您需要指示每行以索引-1结尾的时间,例如:
x [0] [0] .index = 1
x [0] [0] .value = 1.5
x [0] [1] .index = 2
x [0] [1] .value = 2.5
x [0] [2] .index = 3
x [0] [2] .value = 4.5
x [0] [3] .index = -1