LIBMSVM svm_node格式

时间:2014-02-17 07:22:34

标签: java svm libsvm

您好,我目前正在开发一个项目,并已开始使用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

我的理解是对的吗?

1 个答案:

答案 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