libsvm是否适用于多输出回归?

时间:2014-05-07 00:07:10

标签: java vector regression svm

我一直在尝试使用jlibSVM 我想用它来进行多输出回归。

例如我的: 功能设置/输入将是 x1,x2,x3 输出/目标值将为 y1,y2

使用libSVM库可以实现吗?

API文档不清楚,并没有示例应用程序显示jlibsvm的使用所以我试图修改lexecyexec / svm_train.java中的代码

作者最初刚创建的应用程序仅使用一个输出/目标值。

这部分可见作者试图阅读培训文件的部分:

private void read_problem() throws IOException
    {
    BufferedReader fp = new BufferedReader(new FileReader(input_file_name));
    Vector<Float> vy = new Vector<Float>();
    Vector<SparseVector> vx = new Vector<SparseVector>();
    int max_index = 0;

    while (true)
        {
        String line = fp.readLine();
        if (line == null)
            {
            break;
            }

        StringTokenizer st = new StringTokenizer(line, " \t\n\r\f:");

        vy.addElement(Float.parseFloat(st.nextToken()));
        int m = st.countTokens() / 2;
        SparseVector x = new SparseVector(m);
        for (int j = 0; j < m; j++)
            {
            //x[j] = new svm_node();
            x.indexes[j] = Integer.parseInt(st.nextToken());
            x.values[j] = Float.parseFloat(st.nextToken());
            }
        if (m > 0)
            {
            max_index = Math.max(max_index, x.indexes[m - 1]);
            }
        vx.addElement(x);
        }

我尝试修改它,以便向量vy接受具有2个值的稀疏向量。

程序被执行但模型文件似乎错了。

任何人都可以验证他们是否已经使用jlibsvm进行多输出svm回归???

如果有,请有人解释他们是如何实现的?

如果没有,那么有人知道Java中类似的svm实现吗?

1 个答案:

答案 0 :(得分:1)

经典的SVM算法不支持多维输出。解决此问题的一种方法是为每个输出维度提供SVM模型。