SVM在Java中使用Encog作为初学者

时间:2015-01-01 08:10:30

标签: java machine-learning svm encog

我是SVM的初学者。有人可以帮助我从基础知识中使用Encog来理解SVM的概念吗?它将有助于使用示例Java代码。

1 个答案:

答案 0 :(得分:1)

在Encog中,SVM只是一种分类或回归模型,可以与其他模型类型互换使用。我修改了Hello World XOR示例以使用它,您可以看到下面的结果。

这对他们来说是一个不错的介绍:http://webdoc.nyumc.org/nyumc/files/chibi/user-content/Final.pdf 这是一般的建模的基本介绍,我是为神经网络编写的,但它也适用于SVM:http://www.heatonresearch.com/content/non-mathematical-introduction-using-neural-networks

package org.encog.examples.neural.xor;

import org.encog.Encog;
import org.encog.ml.data.MLData;
import org.encog.ml.data.MLDataPair;
import org.encog.ml.data.MLDataSet;
import org.encog.ml.data.basic.BasicMLDataSet;
import org.encog.ml.svm.SVM;
import org.encog.ml.svm.training.SVMTrain;

public class XORHelloWorld {

    /**
     * The input necessary for XOR.
     */
    public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 },
            { 0.0, 1.0 }, { 1.0, 1.0 } };

    /**
     * The ideal data necessary for XOR.
     */
    public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } };

    /**
     * The main method.
     * @param args No arguments are used.
     */
    public static void main(final String args[]) {

        // create a SVM for classification, change false to true for regression     
        SVM svm = new SVM(2,false);

        // create training data
        MLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL);

        // train the SVM
        final SVMTrain train = new SVMTrain(svm, trainingSet);
        train.iteration();
        train.finishTraining();

        // test the SVM
        System.out.println("SVM Results:");
        for(MLDataPair pair: trainingSet ) {
            final MLData output = svm.compute(pair.getInput());
            System.out.println(pair.getInput().getData(0) + "," + pair.getInput().getData(1)
                    + ", actual=" + output.getData(0) + ",ideal=" + pair.getIdeal().getData(0));
        }

        Encog.getInstance().shutdown();
    }
}